Load libraries

library(readxl) # for reading in excel files
library(janitor) # data checks and cleaning
library(glue) # for easy pasting
library(FactoMineR) # for PCA
library(factoextra) # for PCA
library(rstatix) # for stats
library(pheatmap) # for heatmaps
library(plotly) # for interactive plots
library(htmlwidgets) # for saving interactive plots
library(devtools)
library(notame) # used for feature clustering
library(doParallel)
library(igraph) # feature clustering
library(ggpubr) # visualizations
library(knitr) # clean table printing
library(rmarkdown)
library(corrr)
library(ggcorrplot)
library(ggthemes)
library(ggtext)
library(PCAtools)
library(pathview) # for functional analysis and KEGG annotation
library(mixOmics) #multilevel PCA and sPLS-DA
library(lipidr)
library(patchwork)
library(tidyverse) # for everything

Read in data

# raw filtered metabolomics data 
omicsdata <- read_csv("features_post-data-filtering.csv") %>%
  clean_names()

# metadata
metadata <- read_csv("../../../metadata-new.csv")

# carotenoids data
carotenoids <- read_excel("../../../Plasma carot_ret_apo levels.xlsx",
                          sheet = "B1andB3") %>%
  clean_names()

Wrangle data

Metadata

carotenoids <- carotenoids %>%
  mutate(total_carotenoids = b_c_nmol_l_plasma + lyc_nmol_l_plasma + retinol_nmol_l_plasma + apo13one_nmol_l_plasma)

Feature data

# how many features
nrow(omicsdata)
## [1] 2450
# are there any duplicates?
omicsdata %>% get_dupes(mz_rt)
## # A tibble: 12 × 89
##    mz_rt         dupe_count row_id x5109_b1_beta_c18pos…¹ x5101_b1_control_c18…²
##    <chr>              <int>  <dbl>                  <dbl>                  <dbl>
##  1 368.2792_0.6…          2   1042                 10114.                 24509.
##  2 368.2792_0.6…          2   1057                 10114.                 24509.
##  3 717.5903_6.8…          2   4952                 31805.                 49139.
##  4 717.5903_6.8…          2   4956                 31805.                 49139.
##  5 720.5531_6.8…          2   5040                 20646                  23011.
##  6 720.5531_6.8…          2   5070                 20646                  23011.
##  7 812.6663_7.96          2   7214                 20484.                 24697.
##  8 812.6663_7.96          2   7301                 20104.                 24697.
##  9 814.5717_7.3…          2   6253                 10382.                 13812.
## 10 814.5717_7.3…          2   6257                 10382.                 13812.
## 11 931.5277_8.5…          2   8080                 18478.                 15492.
## 12 931.5277_8.5…          2   8092                 18478.                 15492.
## # ℹ abbreviated names: ¹​x5109_b1_beta_c18pos_65, ²​x5101_b1_control_c18pos_82
## # ℹ 84 more variables: x5109_b3_beta_c18pos_81 <dbl>,
## #   x5103_b3_lyc_c18pos_63 <dbl>, x5108_b1_control_c18pos_71 <dbl>,
## #   x5113_b1_beta_c18pos_53 <dbl>, x5112_b3_beta_c18pos_56 <dbl>,
## #   x5105_b1_lyc_c18pos_76 <dbl>, x5110_b3_lyc_c18pos_84 <dbl>,
## #   x5110_b1_lyc_c18pos_59 <dbl>, x5101_b3_control_c18pos_66 <dbl>,
## #   x5113_b3_beta_c18pos_47 <dbl>, x5103_b1_lyc_c18pos_35 <dbl>, …
# remove dupes
omicsdata <- omicsdata %>% 
  distinct(mz_rt, .keep_all = TRUE)

# check again for dupes
omicsdata %>% get_dupes(mz_rt)
## # A tibble: 0 × 89
## # ℹ 89 variables: mz_rt <chr>, dupe_count <int>, row_id <dbl>,
## #   x5109_b1_beta_c18pos_65 <dbl>, x5101_b1_control_c18pos_82 <dbl>,
## #   x5109_b3_beta_c18pos_81 <dbl>, x5103_b3_lyc_c18pos_63 <dbl>,
## #   x5108_b1_control_c18pos_71 <dbl>, x5113_b1_beta_c18pos_53 <dbl>,
## #   x5112_b3_beta_c18pos_56 <dbl>, x5105_b1_lyc_c18pos_76 <dbl>,
## #   x5110_b3_lyc_c18pos_84 <dbl>, x5110_b1_lyc_c18pos_59 <dbl>,
## #   x5101_b3_control_c18pos_66 <dbl>, x5113_b3_beta_c18pos_47 <dbl>, …
# how many features
nrow(omicsdata)
## [1] 2444

Sometimes a weird logical column (lgl) comes up in my data. Let’s check if it’s there

colnames(omicsdata)
##  [1] "mz_rt"                      "row_id"                    
##  [3] "x5109_b1_beta_c18pos_65"    "x5101_b1_control_c18pos_82"
##  [5] "x5109_b3_beta_c18pos_81"    "x5103_b3_lyc_c18pos_63"    
##  [7] "x5108_b1_control_c18pos_71" "x5113_b1_beta_c18pos_53"   
##  [9] "x5112_b3_beta_c18pos_56"    "x5105_b1_lyc_c18pos_76"    
## [11] "x5110_b3_lyc_c18pos_84"     "x5110_b1_lyc_c18pos_59"    
## [13] "x5101_b3_control_c18pos_66" "x5113_b3_beta_c18pos_47"   
## [15] "x5103_b1_lyc_c18pos_35"     "x5104_b3_lyc_c18pos_32"    
## [17] "x5112_b1_beta_c18pos_34"    "x5107_b3_beta_c18pos_28"   
## [19] "x5107_b1_beta_c18pos_29"    "x5102_b3_control_c18pos_33"
## [21] "x5111_b3_control_c18pos_39" "x5105_b3_lyc_c18pos_21"    
## [23] "x5108_b3_control_c18pos_22" "x5102_b1_control_c18pos_5" 
## [25] "x5111_b1_control_c18pos_4"  "x5104_b1_lyc_c18pos_10"    
## [27] "x5115_b3_lyc_c18pos_70"     "x5115_b1_lyc_c18pos_36"    
## [29] "x5125_b1_control_c18pos_80" "x5118_b1_lyc_c18pos_57"    
## [31] "x5121_b1_beta_c18pos_69"    "x5119_b1_control_c18pos_74"
## [33] "x5122_b3_lyc_c18pos_75"     "x5117_b1_lyc_c18pos_46"    
## [35] "x5114_b3_beta_c18pos_23"    "x5124_b3_control_c18pos_68"
## [37] "x5125_b3_control_c18pos_51" "x5114_b1_beta_c18pos_26"   
## [39] "x5120_b1_beta_c18pos_72"    "x5119_b3_control_c18pos_58"
## [41] "x5121_b3_beta_c18pos_48"    "x5116_b3_control_c18pos_20"
## [43] "x5126_b1_beta_c18pos_62"    "x5123_b3_control_c18pos_40"
## [45] "x5116_b1_control_c18pos_6"  "x5124_b1_control_c18pos_45"
## [47] "x5117_b3_lyc_c18pos_2"      "x5122_b1_lyc_c18pos_14"    
## [49] "x5118_b3_lyc_c18pos_9"      "x5123_b1_control_c18pos_11"
## [51] "x5120_b3_beta_c18pos_54"    "x5127_b3_control_c18pos_83"
## [53] "x5129_b1_lyc_c18pos_78"     "x5128_b3_lyc_c18pos_60"    
## [55] "x5134_b3_beta_c18pos_64"    "x5136_b3_beta_c18pos_77"   
## [57] "x5127_b1_control_c18pos_30" "x5132_b3_beta_c18pos_52"   
## [59] "x5130_b3_lyc_c18pos_50"     "x5131_b1_beta_c18pos_38"   
## [61] "x5126_b3_beta_c18pos_24"    "x5129_b3_lyc_c18pos_16"    
## [63] "x5134_b1_beta_c18pos_42"    "x5132_b1_beta_c18pos_41"   
## [65] "x5133_b1_control_c18pos_27" "x5136_b1_beta_c18pos_44"   
## [67] "x5130_b1_lyc_c18pos_17"     "x5128_b1_lyc_c18pos_8"     
## [69] "x5135_b3_lyc_c18pos_18"     "x5133_b3_control_c18pos_15"
## [71] "x5131_b3_beta_c18pos_3"     "x5135_b1_lyc_c18pos_12"    
## [73] "qc3_c18pos_13"              "qc2_c18pos_7"              
## [75] "qc11_c18pos_61"             "qc14_c18pos_79"            
## [77] "qc9_c18pos_49"              "qc10_c18pos_55"            
## [79] "qc6_c18pos_31"              "qc8_c18pos_43"             
## [81] "qc5_c18pos_25"              "qc15_c18pos_85"            
## [83] "qc13_c18pos_73"             "qc7_c18pos_37"             
## [85] "qc12_c18pos_67"             "qc4_c18pos_19"             
## [87] "qc1_c18pos_1"               "x88"
# remove lgl column
omicsdata <- omicsdata %>%
  dplyr::select(!where(is.logical)) 

colnames(omicsdata)
##  [1] "mz_rt"                      "row_id"                    
##  [3] "x5109_b1_beta_c18pos_65"    "x5101_b1_control_c18pos_82"
##  [5] "x5109_b3_beta_c18pos_81"    "x5103_b3_lyc_c18pos_63"    
##  [7] "x5108_b1_control_c18pos_71" "x5113_b1_beta_c18pos_53"   
##  [9] "x5112_b3_beta_c18pos_56"    "x5105_b1_lyc_c18pos_76"    
## [11] "x5110_b3_lyc_c18pos_84"     "x5110_b1_lyc_c18pos_59"    
## [13] "x5101_b3_control_c18pos_66" "x5113_b3_beta_c18pos_47"   
## [15] "x5103_b1_lyc_c18pos_35"     "x5104_b3_lyc_c18pos_32"    
## [17] "x5112_b1_beta_c18pos_34"    "x5107_b3_beta_c18pos_28"   
## [19] "x5107_b1_beta_c18pos_29"    "x5102_b3_control_c18pos_33"
## [21] "x5111_b3_control_c18pos_39" "x5105_b3_lyc_c18pos_21"    
## [23] "x5108_b3_control_c18pos_22" "x5102_b1_control_c18pos_5" 
## [25] "x5111_b1_control_c18pos_4"  "x5104_b1_lyc_c18pos_10"    
## [27] "x5115_b3_lyc_c18pos_70"     "x5115_b1_lyc_c18pos_36"    
## [29] "x5125_b1_control_c18pos_80" "x5118_b1_lyc_c18pos_57"    
## [31] "x5121_b1_beta_c18pos_69"    "x5119_b1_control_c18pos_74"
## [33] "x5122_b3_lyc_c18pos_75"     "x5117_b1_lyc_c18pos_46"    
## [35] "x5114_b3_beta_c18pos_23"    "x5124_b3_control_c18pos_68"
## [37] "x5125_b3_control_c18pos_51" "x5114_b1_beta_c18pos_26"   
## [39] "x5120_b1_beta_c18pos_72"    "x5119_b3_control_c18pos_58"
## [41] "x5121_b3_beta_c18pos_48"    "x5116_b3_control_c18pos_20"
## [43] "x5126_b1_beta_c18pos_62"    "x5123_b3_control_c18pos_40"
## [45] "x5116_b1_control_c18pos_6"  "x5124_b1_control_c18pos_45"
## [47] "x5117_b3_lyc_c18pos_2"      "x5122_b1_lyc_c18pos_14"    
## [49] "x5118_b3_lyc_c18pos_9"      "x5123_b1_control_c18pos_11"
## [51] "x5120_b3_beta_c18pos_54"    "x5127_b3_control_c18pos_83"
## [53] "x5129_b1_lyc_c18pos_78"     "x5128_b3_lyc_c18pos_60"    
## [55] "x5134_b3_beta_c18pos_64"    "x5136_b3_beta_c18pos_77"   
## [57] "x5127_b1_control_c18pos_30" "x5132_b3_beta_c18pos_52"   
## [59] "x5130_b3_lyc_c18pos_50"     "x5131_b1_beta_c18pos_38"   
## [61] "x5126_b3_beta_c18pos_24"    "x5129_b3_lyc_c18pos_16"    
## [63] "x5134_b1_beta_c18pos_42"    "x5132_b1_beta_c18pos_41"   
## [65] "x5133_b1_control_c18pos_27" "x5136_b1_beta_c18pos_44"   
## [67] "x5130_b1_lyc_c18pos_17"     "x5128_b1_lyc_c18pos_8"     
## [69] "x5135_b3_lyc_c18pos_18"     "x5133_b3_control_c18pos_15"
## [71] "x5131_b3_beta_c18pos_3"     "x5135_b1_lyc_c18pos_12"    
## [73] "qc3_c18pos_13"              "qc2_c18pos_7"              
## [75] "qc11_c18pos_61"             "qc14_c18pos_79"            
## [77] "qc9_c18pos_49"              "qc10_c18pos_55"            
## [79] "qc6_c18pos_31"              "qc8_c18pos_43"             
## [81] "qc5_c18pos_25"              "qc15_c18pos_85"            
## [83] "qc13_c18pos_73"             "qc7_c18pos_37"             
## [85] "qc12_c18pos_67"             "qc4_c18pos_19"             
## [87] "qc1_c18pos_1"

Tidy

# create long df for omics df
omicsdata_tidy <- omicsdata %>%
  pivot_longer(cols = 3:ncol(.),
               names_to = "sample",
               values_to = "peak_height") %>%
  mutate(sample2 = sample) %>%
  # add a new column with just subject
  dplyr::rename("subject" = sample2) %>%
  # remove the suffix from subject names
  mutate_at("subject", str_sub, start=2, end=5)

Combine dfs

## tibble [207,740 × 18] (S3: tbl_df/tbl/data.frame)
##  $ subject          : chr [1:207740] "5109" "5101" "5109" "5103" ...
##  $ sample           : chr [1:207740] "x5109_b1_beta_c18pos_65" "x5101_b1_control_c18pos_82" "x5109_b3_beta_c18pos_81" "x5103_b3_lyc_c18pos_63" ...
##  $ treatment        : chr [1:207740] "beta" "control" "beta" "red" ...
##  $ tomato_or_control: chr [1:207740] "tomato" "control" "tomato" "tomato" ...
##  $ mz               : num [1:207740] 189 189 189 189 189 ...
##  $ rt               : num [1:207740] 0.513 0.513 0.513 0.513 0.513 0.513 0.513 0.513 0.513 0.513 ...
##  $ row_id           : num [1:207740] 204 204 204 204 204 204 204 204 204 204 ...
##  $ peak_height      : num [1:207740] 5394 3299 6079 4923 3050 ...
##  $ sex              : chr [1:207740] "M" "F" "M" "M" ...
##  $ bmi              : num [1:207740] 26.1 29.4 26.1 29.7 22.7 ...
##  $ age              : num [1:207740] 65 55 65 50 52 34 60 61 58 58 ...
##  $ tot_chol         : num [1:207740] 127 235 127 172 177 141 235 189 176 176 ...
##  $ ldl_chol         : num [1:207740] 69.4 150.4 69.4 111.4 120 ...
##  $ hdl_chol         : num [1:207740] 40 71 40 53 44 44 52 45 66 66 ...
##  $ triglycerides    : num [1:207740] 88 68 88 38 65 55 169 92 47 47 ...
##  $ glucose          : num [1:207740] 87 90 87 92 91 99 92 103 92 92 ...
##  $ SBP              : num [1:207740] 147 156 147 106 139 104 107 131 109 109 ...
##  $ DBP              : num [1:207740] 76 90 76 71 81 71 70 78 70 70 ...
# replace NA's in certain columns with QC
meta_omics_sep$subject <- str_replace_all(meta_omics_sep$subject, "c", "qc")
  

meta_omics_sep$sample <- meta_omics_sep$sample %>%
  replace_na("QC")

meta_omics_sep$treatment <- meta_omics_sep$treatment %>%
  replace_na("QC")

meta_omics_sep$tomato_or_control <- meta_omics_sep$tomato_or_control %>%
  replace_na("QC")

Data summaries

Number of masses detected

nrow(omicsdata)
## [1] 2444

Mass range for metabolites detected?

range(meta_omics_sep$mz)
## [1]  100.0757 1694.3938

RT range for metabolites detected?

range(meta_omics_sep$rt)
## [1]  0.513 12.336

Mass vs RT scatterplot

# plot
(plot_mzvsrt <- meta_omics_sep %>%
  ggplot(aes(x = rt, y = mz)) +
  geom_point() +
  theme_minimal() +
  labs(x = "Retention time, min",
       y = "m/z",
       title = "mz across RT for all features"))

Histogram for mass range

meta_omics_sep %>%
  group_by(mz) %>%
  ggplot(aes(x = mz)) +
  geom_histogram(binwidth = 25) +
  theme_minimal() +
  labs(x = "Monoisotopic mass (amu)",
       y = "Number of features",
       title = "Distribution of features by mass")

Histogram for RT

meta_omics_sep %>%
  group_by(mz) %>%
  ggplot(aes(x = rt)) +
  geom_histogram(binwidth = 0.1) + # 6 second bins
  theme_minimal() +
  labs(x = "Retention time",
       y = "Number of features",
       title = "Distribution of features by retention time")

NAs and imputing

NAs

# samples only (no QCs)
omicsdata_noQC <- omicsdata %>%
  dplyr::select(-contains("qc"))

#NAs in samples only?
NAbyRow_noQC <- rowSums(is.na(omicsdata_noQC[,-1]))

hist(NAbyRow_noQC,
     breaks = 70, # because there are 70 samples 
     xlab = "Number of missing values",
     ylab = "Number of metabolites",
     main = "How many missing values are there?")

Are there any missing values in QCs? There shouldn’t be after data preprocessing/filtering

omicsdata_QC <- omicsdata %>%
  dplyr::select(starts_with("qc")) 

NAbyRow_QC <- colSums(is.na(omicsdata_QC))
# lets confirm that there are no missing values from my QCs
sum(NAbyRow_QC) # no
## [1] 0
# calculate how many NAs there are per feature in whole data set
contains_NAs <- meta_omics %>%
  group_by(mz_rt) %>%
  dplyr::count(is.na(peak_height)) %>%
  filter(`is.na(peak_height)` == TRUE)
kable(contains_NAs)
mz_rt is.na(peak_height) n
1050.6573_2.737 TRUE 1
1051.1585_2.738 TRUE 1
1052.864_11.17 TRUE 2
1064.8634_11.211 TRUE 21
1077.6264_2.732 TRUE 2
1192.8093_6.322 TRUE 1
1213.4964_3.94 TRUE 3
1260.0333_9.997 TRUE 15
1272.1559_12.098 TRUE 1
1312.1372_10.911 TRUE 14
1321.82_2.739 TRUE 16
1332.9345_6.33 TRUE 1
1339.8437_3.087 TRUE 32
1378.109_6.06 TRUE 2
1413.0725_6.543 TRUE 10
1416.1569_11.643 TRUE 4
1417.1607_11.643 TRUE 4
1419.0884_6.065 TRUE 1
1424.1384_8.941 TRUE 2
1443.1241_6.536 TRUE 22
1460.0658_6.066 TRUE 6
1486.0818_6.746 TRUE 10
1488.1014_8.407 TRUE 3
149.0596_1.28 TRUE 66
1496.0473_7.572 TRUE 8
1512.0991_6.376 TRUE 1
152.0706_0.642 TRUE 56
1558.081_6.341 TRUE 1
1572.0922_6.339 TRUE 13
1580.9848_2.737 TRUE 7
1582.0806_6.324 TRUE 1
1583.0843_6.325 TRUE 1
1596.6247_6.715 TRUE 1
1602.3814_11.358 TRUE 36
1603.3857_11.359 TRUE 33
162.0914_0.651 TRUE 67
1628.3971_11.365 TRUE 15
1628.4765_11.515 TRUE 23
1629.4012_11.367 TRUE 8
1633.4321_11.51 TRUE 16
1636.2128_8.395 TRUE 2
1651.3848_11.251 TRUE 9
1653.489_11.522 TRUE 4
1654.4923_11.523 TRUE 4
1655.4167_11.377 TRUE 1
1657.5142_11.686 TRUE 20
1664.1589_6.841 TRUE 5
167.0854_1.05 TRUE 61
1676.3968_11.262 TRUE 2
1677.4008_11.264 TRUE 2
1678.4082_11.291 TRUE 3
172.1333_0.62 TRUE 46
201.0466_0.675 TRUE 64
203.0439_0.671 TRUE 65
207.1109_0.641 TRUE 1
219.1127_0.668 TRUE 66
229.0945_0.651 TRUE 67
230.073_0.636 TRUE 68
240.1585_0.692 TRUE 59
254.1387_0.695 TRUE 54
256.1695_0.637 TRUE 60
259.0944_0.697 TRUE 62
268.1541_0.91 TRUE 66
272.1651_0.645 TRUE 56
275.068_0.694 TRUE 66
275.1306_0.638 TRUE 66
277.1263_0.644 TRUE 3
308.1256_1.117 TRUE 3
308.1855_0.633 TRUE 20
312.1597_1.413 TRUE 1
315.1224_1.279 TRUE 48
320.2375_0.643 TRUE 69
337.1048_1.268 TRUE 6
346.1226_0.659 TRUE 68
353.079_1.243 TRUE 62
365.1356_1.988 TRUE 1
383.1533_0.931 TRUE 43
389.1625_0.672 TRUE 66
391.1601_0.671 TRUE 65
398.3413_0.639 TRUE 40
399.2641_1.416 TRUE 1
413.2797_1.415 TRUE 7
415.1686_0.643 TRUE 63
423.1686_0.697 TRUE 59
425.1649_0.679 TRUE 29
426.0969_1.177 TRUE 68
426.3213_1.384 TRUE 20
429.24_0.73 TRUE 3
430.2589_1.992 TRUE 11
432.202_0.638 TRUE 64
439.1646_0.682 TRUE 64
463.2323_1.708 TRUE 1
466.3162_1.004 TRUE 19
484.2854_0.667 TRUE 65
531.2196_1.712 TRUE 2
533.3253_0.69 TRUE 39
536.2833_2.749 TRUE 38
616.1763_0.902 TRUE 2
634.4366_0.676 TRUE 1
643.38_0.69 TRUE 6
664.5997_4.075 TRUE 41
682.5424_8.581 TRUE 6
682.5516_8.574 TRUE 4
706.612_10.9 TRUE 6
712.5953_4.577 TRUE 9
736.5043_0.684 TRUE 1
748.5833_7.03 TRUE 2
750.599_7.485 TRUE 3
764.6932_10.985 TRUE 2
766.5377_7.38 TRUE 1
766.6703_10.657 TRUE 13
785.5418_7.137 TRUE 4
786.6508_7.289 TRUE 1
794.7051_10.958 TRUE 5
798.564_5.251 TRUE 11
798.5655_5.067 TRUE 13
798.5661_4.516 TRUE 14
800.5792_5.005 TRUE 25
802.5954_5.397 TRUE 21
807.3448_6.714 TRUE 1
822.5634_4.827 TRUE 41
822.563_5.243 TRUE 36
822.6001_6.635 TRUE 2
822.6568_10.855 TRUE 1
826.5945_5.722 TRUE 44
826.594_5.988 TRUE 33
826.6326_7.901 TRUE 1
844.5121_3.103 TRUE 3
854.4963_2.738 TRUE 10
872.7324_11.418 TRUE 5
894.5999_5.902 TRUE 27
973.7251_11.18 TRUE 2
990.7559_11.04 TRUE 12
992.7701_11.13 TRUE 1

Remove NAs

There are some features that are missing in a majority of subjects. I’m going to remove those because they may skew the data.

# number of features
nrow(omicsdata)
## [1] 2444
# Removing features missing from over 90% of data
omit_features <- contains_NAs %>%
  filter(n/70 >= 0.90)

#preview
nrow(omit_features) # features to remove
## [1] 19
# how many features should be left?
nrow(omicsdata) - nrow(omit_features)
## [1] 2425
# now remove these features from the omics dataset
omicsdata <- omicsdata %>%
  anti_join(omit_features,
            by = "mz_rt")

 # check number of features now?
nrow(omicsdata)
## [1] 2425

Data imputation

# impute any missing values by replacing them with 1/2 of the lowest peak height value of a feature (i.e. in a row).
imputed_omicsdata <- omicsdata

imputed_omicsdata[] <- lapply(imputed_omicsdata, 
                              function(x) ifelse(is.na(x),
                                                 min(x, na.rm = TRUE)/2, x))

dim(imputed_omicsdata)
## [1] 2425   87

Are there any NAs?

imputed_omicsdata %>%
  is.na() %>%
  sum()
## [1] 0
# imputations worked

New tidy df

# create long df for imputed omics df
imputed_omicsdata_tidy <- imputed_omicsdata %>%
  pivot_longer(cols = 3:ncol(.),
               names_to = "sample",
               values_to = "peak_height") %>%
  mutate(sample2 = sample) %>%
  # add a new column with just subject
  dplyr::rename("subject" = sample2) %>%
  # remove the suffix from subject names
  mutate_at("subject", str_sub, start=2, end=5) 

# combine meta and imputed omics dfs
imp_meta_omics <- full_join(imputed_omicsdata_tidy,
                         metadata,
                         by = c("subject" = "subject"))
# separate mz and rt
imp_meta_omics_sep <- imp_meta_omics %>%
  separate(col = mz_rt,
           into = c("mz", "rt"),
           sep = "_") 

# convert columns to correct type
imp_meta_omics_sep$mz <- as.numeric(imp_meta_omics_sep$mz)
imp_meta_omics_sep$rt <- as.numeric(imp_meta_omics_sep$rt)

Notame feature reduction

vignette for reference

#browseVignettes("notame")

Let’s look at what masses come up at each RT again

# rt vs mz plot
imp_meta_omics_sep %>%
  ggplot(aes(x = rt, y = mz)) +
  geom_point() +
  theme_minimal() +
  labs(x = "RT (min)",
       y = "mz")

There are some points that are at the same RT, meaning they could be coming from the same compound. We’ll run notame clustering to collapse features coming from one mass into one feature.

Data restructuring for notame

# create features list from imputed data set to only include unique feature ID's (mz_rt), mz and RT
features <- imp_meta_omics_sep %>%
  cbind(imp_meta_omics$mz_rt) %>%
  dplyr::rename("mz_rt" = "imp_meta_omics$mz_rt") %>%
  dplyr::select(c(mz_rt, mz, rt)) %>%
  distinct() # remove the duplicate rows

# create a second data frame which is just imp_meta_omics restructured to another wide format
data_notame <- data.frame(imputed_omicsdata %>%
                            dplyr::select(-row_id) %>%
                            t())

data_notame <- data_notame %>%
  tibble::rownames_to_column() %>% # change samples from rownames to its own column
  row_to_names(row_number = 1) # change the feature IDs (mz_rt) from first row obs into column names

Check structures

# check if mz and rt are numeric
str(features)
## 'data.frame':    2425 obs. of  3 variables:
##  $ mz_rt: chr  "189.1598_0.513" "104.1071_0.537" "184.0946_0.54" "162.1126_0.545" ...
##  $ mz   : num  189 104 184 162 204 ...
##  $ rt   : num  0.513 0.537 0.54 0.545 0.589 0.591 0.595 0.597 0.611 0.612 ...
# check if results are numeric
head(data_notame, n = 1)
##                     mz_rt 189.1598_0.513 104.1071_0.537 184.0946_0.54
## 2 x5109_b1_beta_c18pos_65      5393.7170    173277.2800    51759.0040
##   162.1126_0.545 204.1231_0.589 265.2403_0.591 144.102_0.595 118.0864_0.597
## 2    144957.5200     35302.4730     25206.2950   496116.2200    213544.1900
##   337.0619_0.611 132.102_0.612 623.1355_0.614 116.0707_0.623 645.1222_0.627
## 2     54898.4920    54694.3200     11556.9730     33922.2100     12947.2550
##   293.0984_0.628 100.0757_0.629 160.0606_0.629 353.0342_0.629 172.1333_0.62
## 2    669172.9400     35459.4900     98662.8200     26301.6210    39135.1450
##   120.0808_0.631 166.0861_0.629 258.1105_0.632 310.2012_0.633 188.0707_0.633
## 2     42466.1330     49830.1250      8127.8880     22907.9510     38425.3800
##   629.1522_0.633 308.1855_0.633 286.2013_0.633 331.0535_0.634 167.0891_0.631
## 2     27773.8100      1071.1624     37006.4730    115179.8800      6466.6787
##   247.1441_0.636 315.0805_0.637 256.1695_0.637 277.1263_0.644 332.243_0.64
## 2     19227.8870    835308.9400       503.6229      1397.2515    6094.1104
##   398.3413_0.639 585.2705_0.643 660.0815_0.643 265.1183_0.643 272.1651_0.645
## 2       503.6229    106325.0160      6281.2650     25677.8980      1143.5956
##   235.0925_0.646 152.0706_0.642 682.0633_0.646 207.1109_0.641 287.1003_0.648
## 2     21110.9260       503.6229      4690.7150       503.6229     14763.2780
##   314.2326_0.654 464.1914_0.656 293.1101_0.657 338.065_0.618 377.2467_0.663
## 2     98041.8100      2922.8655     13778.0100     9382.8500     14033.5670
##   328.2481_0.675 634.4366_0.676 316.2483_0.679 316.2608_0.679 340.2481_0.684
## 2     18997.6460      3395.8367    172184.1900     10606.5730      8409.4020
##   648.4519_0.687 692.4782_0.686 736.5043_0.684 533.3253_0.69 706.4934_0.689
## 2      5077.3500      4088.0354      2706.9158      503.6229      3497.0635
##   330.2637_0.689 515.3654_0.688 588.4113_0.688 368.2792_0.689 750.52_0.687
## 2      9743.1250      3182.8100      1957.7994     10114.1220    2877.0784
##   342.2638_0.69 508.3578_0.689 346.0093_0.691 240.1585_0.692  643.38_0.69
## 2    34116.9340      3075.1228     25780.4180       503.6229    1043.2233
##   356.2794_0.691 363.2166_0.691 254.1387_0.695 344.2792_0.693 205.1221_0.621
## 2      5844.3740      7206.6630       503.6229      7690.0176      5093.7275
##   259.0944_0.697 616.1763_0.702 425.1649_0.679 423.1686_0.697  429.24_0.73
## 2       503.6229      4483.4760       503.6229       503.6229    1073.3726
##   346.0093_0.919 616.1763_0.902 383.1533_0.931 344.2793_0.927 466.3162_1.004
## 2     22806.3960      2304.9036       503.6229      8477.9200       503.6229
##   167.0854_1.05 308.1256_1.117 286.1437_1.13 373.2483_1.147 353.079_1.243
## 2      503.6229      1220.9514     9559.3440      2644.5095      503.6229
##   337.1048_1.268 315.1224_1.279 585.2701_1.361 450.3212_1.383 426.3213_1.384
## 2      1094.0752       503.6229     16384.2050      4375.3020      1517.1168
##   413.2797_1.415 399.2641_1.416 312.1597_1.413 463.2323_1.708 531.2196_1.712
## 2      1245.3229      1691.5208      1938.8829      1366.6835      1879.2894
##   526.2644_1.714 424.3418_1.822 163.0753_1.983 365.1356_1.988 343.1537_2.002
## 2      2830.3435     12478.9500      1823.2700      1293.2098      1224.5826
##   430.2589_1.992 400.3418_2.122 542.3237_2.234 426.3575_2.274 518.3238_2.281
## 2       503.6229     20248.2400     15779.0860     25978.0980     10080.8030
##   468.3082_2.293 516.3057_2.488 494.3238_2.494 590.3212_2.604 568.3394_2.605
## 2     36834.3630      6834.4434     41801.2000      7841.7600     42264.5470
##   445.2944_2.63 566.3214_2.69 536.2833_2.749 544.34_2.697 482.3238_2.701
## 2     2599.1511    56812.7030      2144.9417  368163.4700     43307.0300
##   1087.6686_2.703 1085.6532_2.71 1063.67_2.714 1001.6557_2.715 526.2925_2.719
## 2       8532.2020     11860.8980    45158.1300       5241.0960     19726.0880
##   1128.671_2.722 1045.6241_2.726 578.3923_2.734 522.3458_2.735 1039.6724_2.735
## 2      3874.5076       4286.0070      8663.1660    104104.3360     141075.4400
##   1050.6573_2.737 1580.9848_2.737 637.4547_2.737 520.3416_2.737 854.4963_2.738
## 2       3425.4797       2591.2930      9267.7600   2110536.5000      1008.1475
##   1061.6537_2.738 558.2953_2.739 801.9871_2.739 1051.1585_2.738 802.4888_2.74
## 2      37508.3400     25146.8550      6660.1260       4586.0674     5628.0415
##   1077.6264_2.732 542.3219_2.742 1321.82_2.739 428.3732_2.759 603.2923_2.783
## 2       2352.1426    216674.7800     1340.7731     22848.5140      3954.6320
##   524.2743_2.81 502.2925_2.81 570.3547_2.836 500.2744_2.854 478.2926_2.855
## 2     9483.8800    45643.7200     18142.3830     12592.0380     59690.5820
##   508.3393_2.879 568.337_2.996 546.3554_2.996 1041.6857_3.056 1041.6842_3.059
## 2      8472.4060    19313.4860     96251.1400       7538.0103       7538.0103
##   518.322_3.062 534.2952_3.067 766.4889_3.074 765.9874_3.073 554.3925_3.077
## 2   261189.1200     29635.3340     12595.9060     14793.6910     14094.7330
##   515.313_3.077 762.9789_3.079 1002.658_3.079 1029.627_3.079 1003.1594_3.079
## 2     6508.7183      3456.1096     12248.1160      7750.6987      12764.0290
##   1018.1281_3.082 1250.8236_3.081 1013.6543_3.08 1011.1465_3.08 1258.8122_3.08
## 2       3244.3508       3285.5662    134102.8100      4763.7650      4368.2915
##   1010.6446_3.081 1508.9859_3.081 1261.821_3.081 1018.6298_3.081 496.6809_3.081
## 2       3859.5142      23519.3830     12869.5620       4046.2460      4457.2540
##   1509.9892_3.081 583.4441_3.082 597.4596_3.082 498.346_3.082 627.4702_3.082
## 2      21969.5570     12773.0040      8819.3120   195381.2700     10046.3690
##   1487.0039_3.082 991.6743_3.082 496.342_3.082 613.4547_3.084 519.3249_3.064
## 2      15511.9660    879353.2000  4294420.0000     17320.1840     74408.8700
##   1026.6606_3.098 1339.8437_3.087 1017.6873_3.095 1039.6688_3.106
## 2       3632.0415        503.6229      57205.2580      12549.9610
##   844.5121_3.103 454.2925_3.202 560.3108_3.237 522.3564_3.24 639.47_3.238
## 2      1817.0374     27750.6600     17206.4860  1083035.8000    5109.1450
##   1043.703_3.238 544.3374_3.238 1065.6846_3.239 805.0108_3.238 572.3709_3.254
## 2     42585.4100    173100.4400      13565.8600      3742.7310     11761.4570
##   502.2902_3.355 480.3082_3.357 480.3446_3.381 482.3601_3.403 504.3422_3.406
## 2     12590.9080     50793.1600     30530.7100     30982.6910      6784.8174
##   548.3709_3.408 510.3551_3.445 438.2976_3.525 508.3757_3.535 808.0344_3.778
## 2     13561.2680     46895.3120     13126.1870     19657.0180      9954.2350
##   582.4238_3.778 808.536_3.778 1059.2224_3.779 1069.7165_3.778 1571.0972_3.779
## 2      6841.0654     8679.4720       2830.6848      38131.3050       1797.1025
##   524.373_3.779 562.3265_3.778 1593.0791_3.779 1047.7355_3.778 1331.8987_3.778
## 2  2038640.1000     20471.2420       3281.9902     137818.2500       2004.7372
##   611.4752_3.779 641.486_3.779 526.3772_3.778 1012.7169_3.78 1594.0825_3.778
## 2      7494.6733    14114.6920    105510.5160      3057.3100       3136.2773
##   546.3534_3.779 614.3398_3.784 550.3862_3.859 482.3239_3.884 504.3061_3.884
## 2    276992.3800     11940.7840     14665.8130     47507.3120     17674.9080
##   585.2706_3.939 1191.515_3.94 607.2524_3.94 299.139_3.94 686.3908_3.94
## 2    146034.2000    16599.9630    52378.4020   24249.0720     6995.1753
##   672.3751_3.941 1169.5332_3.94 1213.4964_3.94 629.2342_3.942 508.3754_4.012
## 2     18887.1700     25512.0620      6557.7050     15115.1260      6429.1084
##   510.3914_4.038 538.3859_4.051 664.5997_4.075 466.3289_4.123 541.3858_4.202
## 2     14236.2070      5810.8555       503.6229     17835.5300      2574.6082
##   561.4122_4.23 521.4196_4.236 539.4303_4.244 563.4268_4.262 317.2685_4.264
## 2    23843.7360     33456.5350     10956.2450     12931.3390      7061.0900
##   552.4018_4.301 593.4768_4.312 563.4273_4.415 619.4811_4.462 798.5661_4.516
## 2     10377.7250      5784.8290     18468.0040      3092.1760       503.6229
##   593.4757_4.54 712.5953_4.577 569.4277_4.639 568.4266_4.64 543.4017_4.622
## 2     4907.9043      1515.6571      5953.4795    12313.4640      4421.9320
##   617.4748_4.643 593.4762_4.644 595.4929_4.645 577.4817_4.655 515.3703_4.774
## 2     41282.3480      5630.0254     18788.2730      6552.4790      1753.6527
##   774.5634_4.81 822.5634_4.827 596.4154_4.906 620.4935_4.951 317.2685_4.946
## 2     1473.5468       503.6229      2267.3196      8821.8080     13718.4030
##   641.4722_4.95 619.4903_4.953 647.5118_4.967 669.4937_4.965 800.5792_5.005
## 2     4980.5635     20838.7250     16498.7270      3707.5247      1091.9003
##   798.5655_5.067 695.5093_5.094 673.5278_5.092 669.5575_5.14 610.431_5.16
## 2      1007.2459      8457.6890     31376.8890     2030.2296    4867.0110
##   597.5086_5.242 822.563_5.243 798.564_5.251 592.4686_5.28 683.5094_5.286
## 2      4058.8694      503.6229      503.6229     4339.0366      3237.3774
##   661.5282_5.288 719.5696_5.337 802.5954_5.397 752.5219_5.513 608.4637_5.649
## 2     11441.7550      3824.0588       503.6229      2898.7860      4542.1787
##   1372.06_5.66 834.5932_5.658 765.5124_5.66 1350.0784_5.66 697.5255_5.661
## 2    1504.1250      7477.3240    10079.4390      2835.2773    106392.7800
##   675.5442_5.66 713.5011_5.661 755.4833_5.662 1035.2944_5.66 834.5933_5.658
## 2   386197.2200      3942.7058      6335.6216      2901.3713      8029.4736
##   754.5378_5.732 678.5059_5.698 826.5945_5.722 828.5522_5.728 860.609_5.81
## 2      3039.8936      5521.1553       503.6229      1888.6975    6816.4756
##   791.5279_5.817 1424.0918_5.818 739.5144_5.819 723.5413_5.819 1074.3179_5.819
## 2     10553.4450       3385.8970      5583.9480    144145.2700       3523.3270
##   1402.1101_5.819 1403.1135_5.82 1425.0951_5.82 701.5604_5.818 1073.8159_5.82
## 2       4824.2750      5107.7783      2573.1562    599996.9000      2832.2780
##   1227.7565_5.834 804.5524_5.837 826.5347_5.837 1249.7383_5.838 778.5376_5.842
## 2      12203.0250     12628.0010      3870.6897       8835.8190     12066.2390
##   800.5194_5.843 614.3823_5.849 780.5532_5.895 781.5567_5.896 894.5999_5.902
## 2      2907.3804      3563.6924     11540.6230      6917.9070       503.6229
##   796.5458_5.943 774.5637_5.944 518.4564_5.944 532.4721_5.945 699.5412_5.971
## 2      3604.9233     13888.0150     11549.3370      7264.8643      3503.8652
##   677.5586_5.973 826.5348_5.993 677.5582_5.973 826.594_5.988 776.5195_6.001
## 2     13189.3320      2856.2268     13189.3320      503.6229     11136.4220
##   754.5373_6.002 1378.109_6.06 689.5597_6.062 711.5408_6.063 870.596_6.054
## 2     40443.7230     1011.0738    200887.2800     50749.2400     1772.1250
##   1460.0658_6.066 1419.0884_6.065 721.5835_6.066 749.5557_6.066 727.5745_6.067
## 2        503.6229       1109.9097      9074.2630      5750.4565     19276.9770
##   847.6527_6.068 721.5846_6.067 730.5383_6.068 752.5201_6.07 768.4931_6.068
## 2      2905.4746      9074.2630    114104.4140    27510.7620      1770.2836
##   854.5686_6.074 719.5692_6.151 741.551_6.153 1024.6773_6.157 1046.6591_6.159
## 2      6152.8900     15576.8950     4452.8680      10911.2160       6503.9814
##   836.4936_6.219 846.5226_6.22 873.6685_6.266 778.5354_6.223 756.5541_6.24
## 2      4037.4954     4128.2330      2879.3850     25760.3340   110201.8400
##   852.5506_6.226 830.568_6.228 852.5508_6.228 715.5745_6.252 814.535_6.26
## 2      5595.4194    18959.2660      5595.4194     15226.3955    3462.7990
##   792.5531_6.261 1282.9156_6.311 860.4936_6.313 870.5225_6.318 1192.8093_6.322
## 2     12696.3280       1923.9395      6466.2800      9003.2150       2011.7031
##   887.5125_6.318 803.037_6.321 855.6216_6.322 838.606_6.327 802.5357_6.323
## 2      6353.0870     3670.3958      3051.4343     1869.0016     91769.5300
##   867.6575_6.328 897.6684_6.323 1583.0843_6.325 1582.0806_6.324 818.5091_6.325
## 2      2372.9265     11467.2400       1582.3990       1568.4613      4040.8977
##   1332.9345_6.33 1181.3124_6.332 780.5549_6.325 1560.0983_6.326 1572.0922_6.339
## 2       503.6229       1025.9532    368834.2000       4451.9185        503.6229
##   1561.1021_6.326 911.6839_6.326 1083.7892_6.33 791.5397_6.411 1536.0989_6.339
## 2       4407.1304      6154.8230      2970.0203      6074.7397       2921.4050
##   1180.809_6.327 1586.1131_6.353 1537.1023_6.339 815.5406_6.313 1558.081_6.341
## 2      1127.5221       3110.2422       2659.3777      3513.5120       503.6229
##   856.5843_6.351 1584.092_6.345 808.5757_6.369 1563.1161_6.369 806.5698_6.37
## 2      4378.5490      1198.4238     29549.9180       2475.0942   195438.1200
##   937.6995_6.371 807.5729_6.37 1612.1288_6.374 1613.1329_6.372 1562.1109_6.352
## 2      2721.3022   102868.9500       1763.7870       1275.6945       3185.3523
##   896.5379_6.373 828.5511_6.373 756.5542_6.373 923.684_6.374 1513.1028_6.383
## 2      4877.0825     45829.2930    125456.4500     6563.7100       1131.3215
##   778.5355_6.376 873.6684_6.375 1512.0991_6.376 887.6837_6.371 783.5732_6.445
## 2     29409.0310      4166.9194        503.6229      1988.4071    331912.1200
##   691.5742_6.403 1586.1128_6.4 862.5091_6.42 1587.1171_6.406 790.5352_6.424
## 2      3770.0908     4523.0825     5067.8040       4852.6760     10887.0890
##   872.5379_6.428 804.5511_6.435 768.5536_6.434 857.6371_6.438 1195.8324_6.435
## 2      8783.2360    111106.5100     55822.7970      5338.6836       2865.3325
##   820.5246_6.44 899.684_6.44 869.6734_6.444 1551.1176_6.447 765.0535_6.446
## 2     6667.6587   17594.6720      3180.4214       3467.1973      6213.0625
##   913.6995_6.445 1155.8333_6.446 1156.3359_6.446 1588.1268_6.447
## 2      8412.6800       3080.6865       4607.5050       6853.0015
##   1588.1294_6.449 1550.1138_6.449 782.5712_6.447 1536.6212_6.45 840.6219_6.452
## 2       6853.0015       4199.6777    678390.0000      1190.5923      6660.0550
##   884.6064_6.452 1589.1333_6.45 1538.1147_6.455 1536.1192_6.444 1564.1312_6.455
## 2      9413.5800      5112.1597       5550.9785       1409.7110      19175.4530
##   1565.1348_6.456 1539.1179_6.455 1496.1206_6.463 1496.6252_6.461
## 2      18705.8030       4691.4404       2144.1648       2699.3071
##   1116.8381_6.462 1497.1271_6.467 1508.122_6.465 1507.1178_6.465
## 2       8629.7590       2977.1853     10895.9680      13234.0550
##   1472.1218_6.472 862.6247_6.471 1468.623_6.472 1468.1206_6.471 1471.118_6.473
## 2       3205.9070     29764.3610      5167.5264       5868.0024      5601.3022
##   1509.1328_6.475 1457.6299_6.479 1486.1407_6.477 1457.1286_6.478
## 2      11411.8890       4680.1343      61512.7800       5138.5570
##   1485.1374_6.478 1527.117_6.481 1565.1864_6.477 1526.1136_6.481 1510.1375_6.48
## 2      60516.3240      6122.2560       4547.9770       6177.3384      9231.8545
##   1483.1167_6.498 704.4038_6.503 704.3938_6.501 704.5181_6.5 706.5843_6.5
## 2       3701.0376      2979.1597      3859.7725    5754.9610   62212.0100
##   703.8986_6.501 703.9516_6.503 705.6376_6.502 703.5779_6.502 704.5113_6.501
## 2      4795.3620      4313.9077     12838.2060   3894128.2000      4318.4080
##   1469.1118_6.499 1406.1439_6.504 834.7053_6.506 1448.1242_6.506
## 2       6197.3706     201903.2700      8837.9260      23742.5410
##   1418.1346_6.507 1447.1208_6.507 820.6896_6.508 1417.6332_6.508 1065.848_6.509
## 2      11429.7060      28251.1170     14094.6455      11612.3490      5100.8896
##   1066.3498_6.509 1469.1116_6.5 744.5538_6.51 1459.1207_6.512 1419.1345_6.509
## 2       7944.8300     6197.3706   130015.7600      21799.0680       4790.9395
##   1428.1239_6.513 1429.1272_6.513 1460.1239_6.512 1489.1055_6.52
## 2      38435.3200      39882.6250      19428.5960      3819.5625
##   1500.0993_6.518 1512.1013_6.516 758.5603_6.497 1444.1182_6.522
## 2       2863.6204       1807.7603     16470.0250       2425.5144
##   1451.0918_6.532 1077.3414_6.528 1411.1131_6.529 757.5569_6.495 1481.1047_6.53
## 2       1944.3883      19003.9920       4645.9330     54360.3800      4764.3140
##   1482.1063_6.531 1479.1431_6.532 1410.1118_6.532 741.5301_6.535
## 2       3807.7766       1477.4005       9581.1280     13782.2000
##   1463.0927_6.535 1413.0725_6.543 1443.1241_6.536 1431.0932_6.55 725.5571_6.544
## 2       1717.4335       1060.2296        503.6229      2014.5331    260720.4800
##   706.5381_6.548 1409.1106_6.553 1187.9262_6.553 776.579_6.552 823.6523_6.559
## 2     93600.5800       6711.3150       4113.9510    13343.0590      3093.4878
##   728.5196_6.564 794.5671_6.58 762.541_6.576 445.3676_6.577 795.5713_6.591
## 2     16527.3140     9425.6500     1313.9385    109687.9300      4672.0625
##   738.5064_6.603 1175.7015_6.637 1153.7198_6.64 822.6001_6.635 770.5692_6.675
## 2      2870.3188       6597.0938     11591.6800       503.6229     20639.8160
##   886.5092_6.697 1576.1291_6.701 751.5715_6.701 1192.8412_6.709 807.3448_6.714
## 2      6770.4907       2247.0337     44493.5550       4918.5146      2046.7420
##   1193.3431_6.71 1232.3347_6.716 1557.1328_6.71 1585.1303_6.711 1558.1357_6.713
## 2      5770.2754       7525.5645      4170.9136       2856.0566       3915.7880
##   818.0604_6.711 1458.1721_6.714 1585.6318_6.711 729.5912_6.714 1635.1157_6.712
## 2      4732.0010       2063.3494       2523.9658    306413.6000      17849.0180
##   1634.1123_6.713 923.6842_6.713 1536.1554_6.715 1535.1521_6.713 806.5725_6.713
## 2      15352.7360     32366.5020      17665.0300      17672.5080   1990778.8000
##   896.5381_6.715 1586.1251_6.718 1597.1201_6.716 893.6733_6.713 1623.6198_6.714
## 2     12253.8570       2667.9382       2787.4663      6461.1250       3466.6730
##   1596.1232_6.714 808.6366_6.716 937.6999_6.715 1612.1323_6.715 907.689_6.715
## 2       2560.0590     11384.0690     19629.9690      77630.0200     4811.0470
##   1624.1217_6.715 1613.1357_6.716 1596.6247_6.715 1231.8327_6.718
## 2       5639.5933      80207.5700       2719.5640       8712.6875
##   1540.1229_6.721 1597.613_6.72 1539.1194_6.72 1538.1166_6.72 829.5547_6.726
## 2      18157.9750     3647.1614     30808.1970     31225.4450    112573.4140
##   1462.1391_6.719 806.973_6.716 1624.6226_6.715 1461.136_6.721 1598.1117_6.724
## 2       3168.6880     1876.8628       3109.7778      3381.0615       3605.3027
##   844.5247_6.723 881.6374_6.724 1465.1023_6.726 1194.3346_6.723 1561.1011_6.726
## 2     12924.3340      8552.9310       3474.7380       4337.5340       5940.2400
##   732.5542_6.723 1560.0999_6.725 828.5517_6.726 1464.0995_6.726 863.6839_6.733
## 2    276055.3800       6536.0320    217082.3100       3964.6438      3554.8188
##   1486.0818_6.746 830.5605_6.803 1588.1294_6.745 819.6577_6.728 810.5875_6.727
## 2       1056.5840     36147.8950       6560.4404      2858.3442     16855.0160
##   864.6223_6.744 791.5433_6.743 849.6682_6.746 1570.1174_6.785 1571.1203_6.766
## 2      9567.5260      4449.9565      8039.0127       2437.0930       1673.1512
##   1232.8362_6.721 1564.133_6.867 752.574_6.803 1639.1441_6.788 764.5588_6.812
## 2       6162.0273      1592.2296    22218.8850       1738.5306     19950.1780
##   1389.0311_6.813 446.3707_6.814 829.5548_6.746 848.6162_6.816 1547.1209_6.83
## 2       2245.2970     15048.3770    112573.4140      1549.0123      1851.0347
##   445.3675_6.816 786.5403_6.817 1610.1103_6.827 816.5509_6.821 794.5677_6.822
## 2     44383.0470     13006.0770       2360.6768     12866.7840     23135.7680
##   770.5691_6.825 756.5471_6.823 752.5739_6.808 754.5356_6.825 830.5623_6.824
## 2     45051.0200     13398.2500     21862.4500     82551.0600     44440.2580
##   775.6384_6.825 1638.1373_6.816 751.5717_6.812 889.5277_6.826 792.5512_6.827
## 2      9095.5300       2424.0745     41401.2460     12069.7360     31182.0450
##   1189.3305_6.84 862.5095_6.827 429.3727_6.826 812.5558_6.826 740.5662_6.833
## 2      2290.8455     12648.2920     29734.8850      9023.7230     11398.9930
##   717.5903_6.828 827.6071_6.849 718.5932_6.828 725.5564_6.829 788.554_6.828
## 2     31804.7540      6890.6720     18248.2910      6774.0830     7176.1797
##   824.5758_6.83 1233.3393_6.794 703.5745_6.822 1546.1205_6.851 806.6235_6.835
## 2     5052.6846       2624.7170     17905.9220       2267.5580      8408.0940
##   1664.1589_6.841 1341.0272_6.83 1536.1083_6.846 802.5963_6.831 790.5738_6.832
## 2        503.6229      1807.0807       4108.0620      5939.1426     14675.8810
##   791.5771_6.835 870.5402_6.834 854.5671_6.833 762.5403_6.835 742.5356_6.834
## 2     10014.8450      5618.0310     95410.9400      5182.0020     11383.8750
##   1363.015_6.835 742.5728_6.833 1365.0287_6.836 800.5726_6.827 793.556_6.829
## 2      4216.7646      6285.1150       6167.1187      2866.0864    19775.4650
##   1339.0138_6.829 820.5836_6.837 755.6054_6.838 720.5531_6.843 949.6995_6.841
## 2       1964.2231      3550.4966     12663.0290     20646.0000      3175.7224
##   1207.3311_6.841 832.5855_6.839 740.5626_6.841 780.5519_6.84 963.7151_6.844
## 2       3592.2368    215492.3400     11398.9930   268613.7800      2147.8960
##   805.617_6.84 1170.3294_6.844 740.5609_6.842 727.5724_6.844 1169.3422_6.843
## 2   23781.8240       5499.6943     11398.9930     71935.2700       2549.3354
##   1208.3368_6.844 1221.342_6.847 796.5247_6.843 1208.8392_6.844 804.553_6.847
## 2       8168.1490      8990.7580     13196.6550       8508.4030  1490166.8000
##   1220.8404_6.847 1171.3299_6.847 822.528_6.849 1490.1152_6.846 706.5938_6.852
## 2      11420.0000       6874.2793    12749.6440       2711.4253     67258.3750
##   1637.1286_6.848 820.5251_6.85 1537.126_6.857 1550.1223_6.858 705.5909_6.851
## 2       4997.2275    56154.9450      5891.6943       4848.1133    164496.8400
##   1611.1156_6.852 1144.8407_6.848 1599.1159_6.853 1511.145_6.854 1601.625_6.853
## 2       4880.6240       2717.0547       4693.4136      3669.1072      4794.3223
##   1549.6231_6.854 1157.3434_6.852 1145.3428_6.85 1171.8322_6.85 1510.1351_6.854
## 2       3179.1572       6450.3070      2907.8354      9182.7550       3332.9200
##   1599.6188_6.853 766.5727_6.851 1183.8334_6.853 1509.1326_6.853
## 2       5672.6940     17519.1270      34739.0980       3473.4220
##   1600.1221_6.854 1184.336_6.855 1611.6196_6.855 1612.6219_6.855
## 2       7925.3870     26521.1100       4443.6200       3518.4224
##   1600.6232_6.854 1580.1025_6.858 1536.6252_6.856 1601.125_6.853
## 2       6881.6855       3157.4084       3068.8670      7206.6090
##   1536.1177_6.855 1195.8336_6.857 833.6399_6.878 1157.8451_6.853
## 2       4108.0620      68607.1800      5561.7715       7063.8403
##   1573.1314_6.859 1548.6249_6.858 1523.1232_6.86 1537.1276_6.858
## 2       2732.1280       4955.4800      2464.6990       5891.6943
##   1589.1303_6.863 826.6051_6.862 1562.1129_6.862 1574.6139_6.862
## 2      19960.3400     12937.0000      22721.0200      20510.0120
##   1581.0989_6.863 1553.1294_6.871 1575.1173_6.863 1587.1165_6.864
## 2       2159.3071       5932.7344      29707.4590      73110.5100
##   1586.1131_6.864 1487.1515_6.871 1563.1166_6.865 1575.6183_6.866
## 2      56394.6500      11787.8680      28489.4200      38242.0900
##   1592.5935_6.867 1563.6184_6.864 1514.1154_6.867 1576.1212_6.867
## 2       3451.8123      17199.9920      11699.0390      35512.4450
##   1548.1292_6.867 1572.126_6.868 1580.5988_6.86 840.6221_6.868 1616.1518_6.868
## 2       6371.3115      2966.9448      2407.3428     19593.6020      13179.2820
##   1615.1494_6.868 784.5042_6.876 785.0201_6.879 1593.594_6.87 1594.0976_6.869
## 2      24269.1150      6912.2266      7153.8850     3847.8716       3865.2078
##   1502.1143_6.871 1614.1454_6.868 784.7847_6.875 1564.621_6.871 857.6374_6.871
## 2       4114.4297      23931.6930     22815.4160     15694.0110     15725.6570
##   784.4182_6.876 784.3687_6.876 783.1226_6.878 783.4174_6.877 1593.0936_6.87
## 2      5728.1390      5230.8975      5396.5073      9845.5520      3322.1904
##   1515.1185_6.869 913.7001_6.872 1487.1511_6.872 783.1504_6.876 785.5792_6.874
## 2      12058.3870     55061.8550      11787.8680      5308.9165    142187.2500
##   899.6847_6.873 783.3656_6.875 784.779_6.877 782.9105_6.881 784.6308_6.874
## 2     77207.8800      9307.4820    22815.4160      9752.2200     31362.0040
##   783.332_6.875 783.4393_6.874 783.3243_6.874 783.2199_6.876 784.3942_6.875
## 2     7112.8164      9775.9930      9051.5180      6609.1133      5407.6475
##   1577.1237_6.867 784.4291_6.877 783.1601_6.876 785.0064_6.878 783.1327_6.878
## 2      17270.2850      6519.6690      5370.0770      7101.7363      5553.3584
##   782.5732_6.875 783.2011_6.878 1488.1552_6.873 783.5024_6.875 783.2594_6.875
## 2   5118051.5000      5738.1084      10344.3640     16438.4000      8841.0060
##   783.2926_6.876 783.431_6.876 783.2519_6.875 783.2153_6.875 783.3975_6.877
## 2      8879.7370    11415.3190      8841.0060      6609.1133      9822.5610
##   783.3843_6.877 784.4472_6.876 794.0606_6.876 783.4057_6.877 785.0389_6.88
## 2      7887.0366      7024.9863     10706.0180      9822.5610     7854.3130
##   785.049_6.877 783.2313_6.877 784.4911_6.877 786.5814_6.876 782.9653_6.878
## 2     6642.3755      7012.7370      7622.0440     29706.6050      6474.7227
##   783.067_6.877 784.5306_6.877 783.1442_6.879 783.0991_6.879 784.3802_6.879
## 2     5600.5674      7788.1030      5385.0420      4890.1500      5426.7188
##   784.3306_6.878 782.9942_6.879 783.3522_6.877 783.1872_6.878 784.3478_6.878
## 2      4889.5190      5416.9478      7914.3000      6745.3380      6518.7840
##   783.3414_6.876 1562.1131_6.863 784.4086_6.876 782.5279_6.881 784.3757_6.877
## 2      8348.8110      22721.0200      5975.5410     14215.5460      5426.7188
##   1590.1432_6.882 1549.1336_6.872 784.9793_6.877 1548.1302_6.87 1566.2163_6.888
## 2      22002.9630       6424.1000      8130.7410      6655.7446      22692.1950
##   1564.1347_6.888 897.7049_6.893 1569.1509_6.94 883.6894_6.894 869.6738_6.894
## 2     850852.2500      6647.4990     23776.1930     17272.9080     20351.4360
##   1525.1338_6.906 1565.1377_6.892 784.6324_6.878 1592.1507_6.918
## 2       2977.8179     861451.7000     31362.0040      12488.2100
##   1552.1254_6.917 1463.1508_6.915 1172.8405_6.921 1172.3364_6.884
## 2      12711.5050       2801.7778      10840.8470       9370.1010
##   1551.1225_6.925 1550.14_6.908 782.0605_6.928 1591.1484_6.916 1551.6195_6.93
## 2       9737.1880     4848.1133      8147.8960      22023.9100     11321.2010
##   1540.1336_6.931 1542.2142_6.931 1541.137_6.931 1541.2129_6.933
## 2     486983.6600      11582.8310    465805.6000      18545.8790
##   1524.1325_6.944 1160.8402_6.939 1539.62_6.944 1160.3363_6.993 890.7034_7.007
## 2       3996.6003      12344.8990    13607.3100      11612.7120     24366.7950
##   846.6771_7.001 876.6878_7.013 759.4494_6.981 759.2363_6.979 760.4788_6.981
## 2     14237.4900     26663.7320     13573.4520      9096.3140      8931.8230
##   759.4107_6.98 873.7049_6.978 760.3659_6.98 759.1825_6.981 761.2418_6.982
## 2    12453.7660      8745.5550     7240.0250      8073.8936      7632.6235
##   761.5791_6.979 758.6931_6.98 760.5104_6.985 759.3448_6.983 758.5734_6.982
## 2    159828.1700   151150.4800     10110.6830     12389.0630   5924760.5000
##   759.3553_6.982 759.5018_6.981 759.317_6.981 759.3092_6.981 760.4052_6.983
## 2     11545.6080     19481.5640    11961.7450     11055.1080      7653.5890
##   759.3828_6.982 760.4925_6.98 759.4259_6.982 759.3339_6.982 1516.1361_6.982
## 2     13261.5640     9171.5510     12957.3940     12457.1140    1410985.4000
##   759.2062_6.983 759.391_6.982 758.9593_6.983 759.2797_6.981 760.6287_6.982
## 2      9527.5670    13356.7440      7871.1600     10960.3310     37455.2970
##   760.421_6.983 759.2558_6.98 760.5281_6.984 761.2551_6.982 1517.1828_6.983
## 2     8018.0870    10437.2280      8964.4430      7059.6700      70068.8050
##   759.2209_6.98 760.3904_6.983 759.1347_6.985 758.9871_6.983 759.2864_6.986
## 2     8099.9546      7451.4630      7856.2646      7519.8735     10960.3310
##   759.1729_6.983 759.1221_6.983 759.0903_6.983 759.243_6.983 760.4378_6.981
## 2      8494.0900      8485.6700      9391.7260     9508.1700      7236.2650
##   859.6895_6.984 761.0316_6.983 759.1094_6.983 760.5329_6.983 759.058_6.985
## 2     23681.3400      9723.2900      7969.4097      9791.5930     7774.2285
##   758.5284_6.987 759.4041_6.982 760.9991_6.984 760.3462_6.982 760.2985_6.984
## 2     16056.2940     13356.7440     10946.2920      6063.8203      5087.1553
##   759.2652_6.984 759.0221_6.985 760.7903_6.983 760.2926_6.982 759.1449_6.983
## 2     10437.2280      7333.5530     25374.4570      5774.9730      6841.0490
##   760.3968_6.983 760.3759_6.985 760.6318_6.982 1518.2168_6.99 748.5833_7.03
## 2      7653.5890      7195.2363     35895.7270     27325.6560     1124.0197
##   761.0061_6.983 1528.1243_7.002 1148.8422_7.002 1527.6219_7.002 760.5406_6.984
## 2     10946.2920      18321.8710      18726.2700      16791.1300      8467.7660
##   1475.1518_7.004 845.6738_7.007 1476.1552_7.005 889.7001_7.009 769.5595_7.011
## 2       7617.8633     23587.6600       8129.0005     40159.9000     14592.2690
##   770.0615_7.009 1564.1269_7.052 718.5934_7.015 717.5903_7.018 875.6845_7.017
## 2     14226.6720       9514.4980     18629.5940     38487.5270     49967.1400
##   1523.0877_7.024 1478.1161_7.023 1522.0846_7.024 1479.1185_7.024
## 2      11077.4370       5792.9300      12143.6690       4028.0125
##   1568.1537_7.025 1567.1512_7.025 1538.1135_7.026 1539.117_7.026
## 2      73506.9200     138715.3100      38153.0500     43548.2500
##   1566.1476_7.026 1553.1308_7.035 1159.3314_7.035 764.5222_7.036 720.5532_7.039
## 2     146112.4200       8087.8223       9756.1900     24172.5860     14088.0380
##   1550.1462_7.021 1552.6273_7.034 1159.8332_7.037 1544.0675_7.037
## 2       3413.4805       8553.4920      15630.4540       4475.8433
##   1545.073_7.035 833.637_7.039 1173.8476_7.044 781.62_7.043 1572.101_7.045
## 2      3244.0056     7982.1294       6445.1055    5688.7090      2317.2297
##   780.5518_7.046 1173.3456_7.052 811.5943_7.054 1184.8408_7.054 809.5892_7.057
## 2    183253.7200       5460.8657     19779.6040       8766.1340    291041.7800
##   1617.1644_7.055 808.586_7.055 786.504_7.061 1616.1606_7.056 1578.1434_7.057
## 2      11359.0870   588403.0600     3929.7473      11933.2320       6161.7120
##   792.5893_7.058 858.5992_7.06 939.7152_7.063 848.5388_7.066 1185.344_7.069
## 2     15391.7010     2558.9810      7418.6600      9512.5550      6107.9320
##   925.6997_7.067 1172.8404_7.074 830.5667_7.072 1197.3456_7.08 1578.1423_7.058
## 2     11909.1820       3174.1330     70597.1900      3549.9673       6161.7120
##   1593.1638_7.133 1577.1364_7.091 1564.1272_7.069 794.0604_7.102 793.5586_7.102
## 2      20253.2640       2604.5760       9514.4980      7002.1370      6752.8570
##   1565.1315_7.095 1577.6354_7.106 731.6047_7.112 1545.1554_7.122 1185.8481_7.12
## 2       7596.2305       2974.8100      5290.3833       7436.1274      7499.9090
##   1186.3509_7.119 1174.8563_7.123 1543.1503_7.123 1542.1466_7.121
## 2       5486.9070       3801.6438      33650.1500      35511.2500
##   1566.6417_7.129 1544.153_7.124 1590.143_7.137 1506.089_7.132 1614.1417_7.109
## 2       2229.7130     18147.6930     14288.6090      1726.0093       4281.4746
##   871.6892_7.141 1592.1596_7.145 1594.1676_7.138 785.5418_7.137 1507.0917_7.135
## 2      8669.5390      26156.4300      11131.2230      2624.5994       1453.5707
##   1187.8642_7.137 1579.649_7.139 1187.3609_7.137 885.7047_7.143 842.6373_7.146
## 2       3963.2363      3174.7930       3975.4958      5349.6465      8487.8270
##   1568.1618_7.14 1591.1473_7.14 1580.1526_7.144 834.6001_7.175 784.5879_7.141
## 2     64757.8750     15067.0070       3506.3062     24930.0000   1692172.1000
##   1198.856_7.141 915.7154_7.143 901.6999_7.143 787.5943_7.141 807.5705_7.147
## 2      8771.7010     17416.8220     30570.2270     41582.9800     99010.7100
##   1569.166_7.14 822.5404_7.148 806.5675_7.192 1574.148_7.172 1575.1514_7.174
## 2    62605.8000     10181.6010    197554.6900      3456.5688       2419.8360
##   859.6529_7.212 925.6996_7.166 445.3675_7.185 1530.1458_7.188 1531.1493_7.186
## 2      8776.9590      8828.3290     12413.9570       6399.9870       4770.6800
##   874.5538_7.197 692.5581_7.191 790.5744_7.193 1598.1451_7.197 1554.142_7.183
## 2     12562.0710      7282.0550     32107.7170       1604.7759      2480.2630
##   831.57_7.208 812.5561_7.198 907.6886_7.2 746.5692_7.204 830.5666_7.214
## 2   28144.8570      7984.7334    1989.6963     95167.7200     48927.3360
##   768.551_7.206 748.5272_7.208 842.5663_7.213 820.5846_7.213 864.5249_7.21
## 2    16492.4940      5183.9150      6109.2880     24081.3870     6938.9453
##   827.6266_7.218 1548.0963_7.222 762.5038_7.219 740.5222_7.221 743.6054_7.227
## 2      3752.6655       3244.9707     13752.5580     42976.8600      7719.2812
##   1546.0812_7.232 1547.0845_7.233 856.5819_7.24 1524.0983_7.244 1525.1027_7.243
## 2       3483.6980       3488.1213     6638.0005       5453.5280       4776.9340
##   807.5706_7.257 834.6002_7.257 724.5272_7.284 797.5882_7.268 842.638_7.268
## 2    118741.4600     39144.8440      1910.8232     35788.4500    10514.0000
##   796.5845_7.27 1542.1462_7.263 1581.1632_7.283 806.5675_7.265 874.5539_7.248
## 2    72564.8600      10236.8920      12460.1220    221178.7000     12604.8080
##   1566.1444_7.237 859.6529_7.266 822.5405_7.274 807.0682_7.274 1604.1571_7.283
## 2       6496.6960      9165.1560     13790.8620     14134.1330       4398.7830
##   902.7033_7.285 1198.8563_7.281 1187.8649_7.285 1580.159_7.285 901.6999_7.285
## 2     22156.0230      15122.6640       8691.5720     16503.8630     43110.0430
##   1590.144_7.285 1579.6508_7.286 1199.3591_7.285 1602.1511_7.303
## 2     25340.2340       6353.3730      13333.3610       3956.8882
##   1619.1782_7.285 1187.3625_7.286 1591.1476_7.288 784.5881_7.29 871.6892_7.289
## 2       6223.6963       5950.3315      27671.9960  2985055.5000     12021.5920
##   788.5964_7.29 1569.2427_7.289 1569.1673_7.289 786.6508_7.289 785.452_7.291
## 2    13002.8090       7227.2820     169802.7700     14278.9120     3061.6868
##   1568.1636_7.29 915.7155_7.29 885.7047_7.291 787.5945_7.291 916.7188_7.29
## 2    183332.1200    26279.4590      9076.5380     69423.9300    16018.3640
##   784.9268_7.293 1591.6495_7.292 1199.8618_7.293 1602.6436_7.296 1500.102_7.296
## 2      3556.9736       7716.3160       8550.2400       3842.6375      8130.5380
##   1592.1607_7.297 1501.1056_7.297 1522.0815_7.299 1618.1731_7.3 1603.1486_7.299
## 2      53719.4200       6924.1850       3485.3882     7398.9080       6123.0910
##   716.5222_7.301 1593.1654_7.298 1210.8558_7.304 1210.3541_7.309
## 2     29371.9920      48039.5700       6494.1220       5208.9634
##   1614.1426_7.311 1615.1461_7.313 1616.1569_7.316 1211.3587_7.312
## 2       6480.6406       6684.4070       6791.0840       6283.5860
##   808.5857_7.318 795.5728_7.343 1617.1623_7.316 1557.1645_7.322 1556.1613_7.323
## 2    326688.6000     13748.4850       5146.9920       9951.8450      12318.7780
##   1616.1572_7.316 809.5888_7.318 939.7152_7.328 1601.1673_7.328 1600.1629_7.331
## 2       6791.0840    164733.8000      4276.1560       2296.2922       2488.0470
##   810.5975_7.409 925.6999_7.337 1577.1677_7.349 816.589_7.342 830.5666_7.346
## 2     71589.9800      6891.4443       4408.1323     9590.6030     40156.2030
##   1576.1637_7.357 792.5899_7.352 909.7046_7.351 814.5717_7.361 766.5377_7.38
## 2       4759.7980     52424.3240      3424.4446     10382.2705    27209.4060
##   1550.1483_7.401 1574.1454_7.378 719.6006_7.392 1572.1304_7.394
## 2       4758.8804       2446.9675      4816.7130       1660.7784
##   1524.1333_7.404 824.6209_7.408 1551.1527_7.401 1562.1493_7.418
## 2       1292.6350      2627.0017       5710.2900       2471.5918
##   1550.1497_7.403 718.5737_7.412 1533.1433_7.416 788.5563_7.415 766.5755_7.417
## 2       4758.8804      8682.3580       3260.2266     57011.7700    263404.9700
##   1532.1401_7.417 1562.1488_7.418 1563.1535_7.418 897.7047_7.419 883.6892_7.419
## 2       2746.2073       2471.5918       2596.2554      6101.3110     12916.7140
##   818.5668_7.42 1554.1324_7.421 796.5848_7.423 1577.1679_7.401 1576.1634_7.391
## 2    22529.6520       1357.0139    107920.9800       2470.9812       3383.8892
##   1539.1546_7.459 927.7143_7.45 812.6068_7.457 832.5817_7.451 811.6039_7.456
## 2       2163.3127     6838.9920     22156.7340     31705.1050     73096.5300
##   810.6006_7.457 764.5195_7.458 742.5377_7.462 1538.1514_7.472 881.5145_7.469
## 2    134224.0800      7721.0737     22778.2030       2572.7212      6062.2285
##   859.5323_7.471 840.5868_7.472 876.559_7.475 818.6053_7.48 1497.1674_7.486
## 2      5798.9062      8956.4600    11421.3570    37945.4260       1581.1414
##   807.6359_7.483 750.599_7.485 1583.178_7.489 1582.1737_7.485 1583.1777_7.489
## 2      3831.0168      503.6229      2480.3840       2310.0151       2480.3840
##   1508.1468_7.513 794.568_7.494 889.6996_7.495 1541.1852_7.515 772.5855_7.501
## 2       3585.3577    38519.9100      7052.8890       3199.9272    226832.1600
##   1500.1349_7.508 1509.1474_7.507 753.5881_7.505 1544.1615_7.508
## 2       2126.2856       2092.0752     85613.6950       4649.3955
##   1545.1646_7.511 1503.1775_7.514 1504.1822_7.513 822.5994_7.509 731.6073_7.511
## 2       4911.4050       6527.6740       3927.5327     13095.0530    454151.2800
##   1463.2071_7.511 1462.204_7.513 1515.1602_7.514 1514.1517_7.514
## 2       3124.4854      3205.0034       4324.0240       4498.1920
##   1564.1662_7.508 1473.1717_7.517 1474.1752_7.518 859.6891_7.519
## 2       2016.1738       4781.7980       3421.7024      8154.2960
##   1507.1493_7.519 1506.1473_7.519 764.5566_7.52 873.7045_7.52 1508.1474_7.516
## 2       6633.2515       6062.3270    31794.8850     4982.9850       3585.3577
##   1487.1502_7.525 1485.1447_7.523 742.5753_7.523 1518.1461_7.531
## 2       2613.7031       2148.8591    191131.1200       2861.4202
##   1484.1411_7.523 1486.1496_7.524 1465.1678_7.525 1466.1708_7.525
## 2       2470.0022       1497.9453       6654.8980       6344.9556
##   1477.1393_7.527 1523.1825_7.536 1476.1365_7.528 1553.1686_7.544
## 2       6809.4550       2414.2344       6057.2340       3506.8452
##   1526.1519_7.532 1534.154_7.527 1527.1556_7.532 1541.1773_7.535
## 2       4657.5740      2007.2792       3840.5676       3371.8267
##   1518.1432_7.534 1468.1317_7.534 1535.1558_7.533 734.5702_7.535
## 2       2861.4202       6072.6187       2250.0254    353520.0300
##   1469.1342_7.535 865.6997_7.537 851.6839_7.537 756.5512_7.537 821.6735_7.538
## 2       5004.6157      5414.0570     10778.7380     54331.4180      4345.4893
##   1479.137_7.538 1490.1052_7.54 1540.1625_7.542 804.5937_7.544 794.5862_7.544
## 2      2990.7666      2127.0884       3679.2427      3675.0496     15818.0250
##   1510.1552_7.549 1511.1587_7.551 1482.0893_7.554 1552.1644_7.555
## 2       4226.1150       3603.8474       2527.3809       3953.8550
##   835.5327_7.555 1499.1861_7.555 852.559_7.556 792.5899_7.556 1502.1505_7.558
## 2      4495.5090       5060.1533     7433.6323     79604.4140       8881.8440
##   1503.1576_7.556 1500.1884_7.555 857.5144_7.562 1495.1496_7.564 849.6468_7.572
## 2       8585.5010       4000.7683      3715.0370       2497.3570      1906.3047
##   1561.1726_7.566 814.5717_7.564 748.5274_7.569 1496.0473_7.572 1537.1733_7.573
## 2       2592.5684     13302.2200     33318.0080        503.6229       6685.3300
##   1517.1166_7.575 1516.1139_7.574 1560.169_7.579 1536.1705_7.575 770.509_7.576
## 2       2530.5850       2080.4326      2282.4321       6401.7490     9558.0200
##   768.5909_7.579 1578.1799_7.626 899.7204_7.586 835.6299_7.591 790.572_7.588
## 2    425445.9700       4914.7740      8112.9507      3593.3400    71291.9200
##   885.7047_7.587 1494.1454_7.592 806.5656_7.605 1512.1627_7.554 786.5917_7.604
## 2     18110.2000       2098.2405     15177.7750       2484.3500     12606.6910
##   1491.1814_7.626 795.6347_7.605 1579.1825_7.633 832.582_7.631 941.7308_7.633
## 2       2028.2305      4027.3157       5770.3623    32799.2770      3788.4329
##   902.5744_7.633 812.607_7.646 811.6042_7.645 810.6013_7.646 1578.1793_7.636
## 2      4986.0996    33542.0430    107926.2800    204152.2500       5323.6300
##   850.5541_7.648 1544.1549_7.686 1592.1591_7.656 1181.7509_7.659
## 2     13692.6510      23416.9530       3815.0010       3838.7810
##   1187.8641_7.656 818.6355_7.665 1545.1606_7.669 744.5901_7.661 816.587_7.665
## 2       3432.4690      8476.7350       9823.2010    122544.6400    23278.8140
##   1526.1435_7.632 1528.1659_7.665 1529.1702_7.665 782.5674_7.669
## 2       3219.6997      13098.2320       9945.9770    204366.1700
##   1605.1979_7.674 1571.181_7.67 1570.1764_7.672 1570.1773_7.672 911.7203_7.674
## 2       3559.1594    25507.2810      26085.3030      26085.3030      8083.8223
##   1604.1948_7.675 798.5402_7.677 1163.3585_7.687 1538.1799_7.62 1539.1868_7.674
## 2       4078.1277     12759.4400      12428.9020      3300.3145       3109.0042
##   1505.1707_7.678 1576.1618_7.678 1504.1669_7.68 878.7033_7.717 925.736_7.685
## 2      20141.2340       4844.1074     22547.9220     25510.8300     4708.0386
##   1558.1829_7.689 1162.8568_7.691 794.6062_7.691 1558.1819_7.689
## 2       7927.0690      16056.3570    297145.3800       6884.3910
##   1588.1988_7.697 1548.6599_7.695 1589.2021_7.7 1543.1477_7.702 1554.1833_7.701
## 2       4674.9470       3720.1523     5487.4917      43559.9200      71208.0300
##   1571.1809_7.671 1555.1868_7.702 1542.1448_7.703 1546.1714_7.763
## 2      25507.2810      70354.0300      40527.9020       6810.4053
##   1543.1481_7.702 1151.8656_7.71 771.5762_7.712 1531.6527_7.711 1151.3639_7.711
## 2      43559.9200     17830.4570     17433.5570      13362.9770      11389.1040
##   1544.1542_7.691 761.302_7.716 1532.1582_7.713 861.7048_7.713  877.7_7.713
## 2      23416.9530     4584.8213      12936.2470     20699.1840   49098.1300
##   1542.645_7.698 760.9218_7.716 1510.1192_7.742 762.5251_7.716 761.5191_7.716
## 2      9268.2520      6645.4194       2446.1653      5528.1370     10925.8580
##   847.6893_7.716 761.3781_7.717 762.6491_7.715 760.9763_7.718 761.4062_7.717
## 2     24082.5180      5340.2750     22571.0400      4674.2236      6146.4950
##   761.329_7.717 761.0763_7.717 761.4545_7.719 760.5883_7.719 762.5433_7.717
## 2     5142.3794      3327.1802      6169.5625   4489468.0000      5709.7173
##   761.4437_7.717 761.1927_7.717 763.5945_7.717 1521.1684_7.718 1520.1651_7.717
## 2      6169.5625      4225.2026    111291.4000     488071.2000     529120.6000
##   891.7156_7.718 761.3681_7.718 1531.1683_7.726 1535.1253_7.718 1534.1209_7.719
## 2     34318.6200      5340.2750       6923.9043       5424.9260       6476.6000
##   761.2595_7.716 761.4141_7.718 760.5459_7.719 761.3174_7.717 1583.089_7.72
## 2      4221.0815      5045.6753     11911.6570      4070.7178     7703.6436
##   1584.0928_7.721 762.5032_7.719 1521.243_7.719 1629.2009_7.725 1628.1971_7.724
## 2       7824.3150      5498.3190     19060.6230       6422.5650       6269.8535
##   774.5423_7.725 1608.1354_7.743 1568.1599_7.728 1542.1456_7.705
## 2     11221.3160       1272.1986       5344.1250      40527.9020
##   1568.6597_7.736 1569.1611_7.737 1569.1618_7.737 1595.1823_7.739
## 2       6495.0503       7725.8887       7725.8887      98361.6800
##   1594.1789_7.739 1588.1975_7.7 1188.8722_7.741 1597.1881_7.738 1579.6524_7.748
## 2     107510.5860     4674.9470       6300.3110      22405.0430       4470.2580
##   1580.1749_7.748 835.655_7.749 834.602_7.751 1669.196_7.752 1668.1927_7.752
## 2       5792.3900    11716.9440   448794.2200      7539.9023       7337.1504
##   1616.16_7.754 1617.1626_7.754 1199.864_7.757 1518.2006_7.758 1517.1985_7.759
## 2     7962.7446       8248.7310      6011.0376      14714.3430      14677.2840
##   965.7308_7.761 1540.1703_7.761 1591.2114_7.764 828.6106_7.766 1592.2118_7.764
## 2      4966.2070       5146.0073       2566.1387      6108.8945       3137.5660
##   818.6356_7.752 819.5737_7.769 951.7153_7.77 1531.181_7.771 1530.1768_7.745
## 2     10548.5900      5129.0654     8069.8920      7283.2686       7336.8540
##   757.6221_7.776 856.5823_7.778 798.5402_7.73 1484.1047_7.781 1559.1256_7.781
## 2    173236.7200     37189.6800    12759.4400      12958.6980       3212.6826
##   1558.1201_7.783 1485.108_7.781 1546.1749_7.78 1604.1937_7.739 780.5921_7.79
## 2       3719.1820     12755.6810      6810.4053       2881.0300    21050.6540
##   1506.0868_7.79 1547.1793_7.789 1507.0899_7.79 1580.1032_7.792 837.614_7.764
## 2      7164.4497       6038.4316      6378.9697       1895.6180    20684.0250
##   1481.1402_7.792 858.5914_7.792 825.6473_7.81 821.6234_7.811 820.6201_7.811
## 2       1800.8228      7071.5520     3993.2249     12139.4410     22466.3280
##   902.5743_7.805 724.5277_7.806 1448.0465_7.808 1470.0283_7.811 770.6049_7.812
## 2      5288.8380     82317.8750       2385.7983       1235.0146     53227.2660
##   825.6476_7.811 802.5717_7.81 746.5091_7.814 811.6292_7.819 770.6048_7.813
## 2      3993.2249     3054.8853     22823.3730      9954.6150     53227.2660
##   798.6003_7.83 860.6149_7.833 792.5888_7.837 1532.1012_7.882 820.5823_7.852
## 2    34042.7030      6221.1810     18303.9510       2098.2295      8507.3650
##   783.6368_7.847 805.6187_7.848 745.6202_7.852 818.6049_7.793 806.611_7.876
## 2     31443.3180      9091.6620     13998.8010      8690.4080     4951.1753
##   876.5695_7.88 878.5742_7.89 756.5904_7.889 748.5844_7.89 772.5245_7.894
## 2     7075.7820     5127.9660      9227.3960    18335.3610      9190.0830
##   1547.1803_7.856 700.5274_7.902 1486.1173_7.882 826.6326_7.901 820.6202_7.907
## 2       5399.4360     21380.6050       3084.0728      1115.1819     24864.7500
##   1578.178_7.924 854.6305_7.919 900.5692_7.918 1511.123_7.922 1510.1192_7.922
## 2      2589.2476      4165.8470      8471.4650      4173.4316       4908.7837
##   1558.1745_7.924 733.6212_7.929 1566.1816_7.932 734.6246_7.927 733.6215_7.929
## 2       3018.6914     26322.7480       1988.4016     13073.2260     26322.7480
##   1567.1909_7.931 1570.1778_7.936 848.556_7.937 885.6686_7.937 1544.2137_7.94
## 2       2143.8262      10944.2300    11359.5360      7438.5767      3019.1958
##   832.5829_7.939 1543.2104_7.94 822.5985_7.942 750.5434_7.943 1582.1177_7.942
## 2    190289.3000      2826.2402      7101.0186     42114.6330       6270.0050
##   1238.3816_7.948 1604.1947_7.949 1592.1862_7.949 1237.8801_7.949
## 2      11928.0460       5575.0215       3663.0583      12679.1630
##   811.0052_7.959 1642.1751_7.953 1643.1784_7.953 1605.1986_7.95 1561.1392_7.955
## 2      4200.2954      22001.8050      26935.0800      5968.8647      15708.4380
##   812.6663_7.96 822.0921_7.956 1227.3893_7.956 1560.1357_7.954 1632.1881_7.956
## 2    20483.7340     13487.0800       8973.3570      17124.4300      12940.0440
##   1591.1826_7.956 927.7157_7.955 812.5189_7.959 1226.887_7.956 821.5898_7.956
## 2       3305.5847     47009.2540      3487.0654     13389.3250     12952.9170
##   813.6106_7.959 1225.88_7.956 1226.3841_7.957 941.7313_7.957 1631.6823_7.958
## 2    105242.3700     9936.5750      11729.9080     34206.3320      12720.3600
##   1622.2784_7.959 897.705_7.958 911.7206_7.958 811.2977_7.959 810.9483_7.96
## 2       8327.5340    16258.5050     12577.9060      2953.2380     8446.5330
##   810.6041_7.959 1590.1749_7.958 1621.1991_7.959 811.4149_7.961 814.6127_7.96
## 2   3797555.0000       2573.6409     291290.3400      3379.2712    19150.5780
##   1620.1954_7.96 811.5374_7.96 811.4537_7.958 1621.2757_7.96 1631.1866_7.959
## 2    288335.1600     7926.8980      3951.1492     14227.1680      10745.7290
##   811.3445_7.959 812.545_7.958 1604.1946_7.949 1225.3783_7.964 1606.2002_7.968
## 2      2689.3547     4522.8545       5575.0215       8367.9040       4865.0280
##   1620.6864_7.972 820.5825_7.912 1215.3898_7.986 1580.196_7.986 1581.2003_7.986
## 2       7794.1480      7906.4290       8153.8105      8360.7840       8650.4210
##   1214.8875_7.988 1536.1354_7.989 1619.1791_7.991 1537.1392_7.989
## 2       9454.2780       7501.6694      25151.9940       7450.5186
##   1214.3846_7.993 771.6088_7.993 1618.1753_7.994 770.6056_7.993 1646.2057_7.997
## 2       9955.2040     21877.8140      19924.5230     45203.0550       9875.2490
##   1608.188_7.997 1597.1987_7.999 1607.6828_7.999 1596.195_7.999 1203.3894_8.009
## 2      9616.7790     238179.7200       8933.7910    237418.1000       8534.0230
##   1647.2105_8.001 1597.2743_8.003 1213.88_8.002 1607.1867_8.003 811.6598_8.009
## 2       9716.3730      10932.1640     8690.0570       9580.7330     15617.2100
##   1606.677_8.009 1202.8865_8.011 1556.1974_8.013 1557.2015_8.015
## 2      7183.5640      10947.6090       7585.3350       8709.0260
##   1625.2149_8.037 810.6564_8.03 1595.6827_8.019 1547.1806_8.02 1191.3906_8.062
## 2      12292.9170    27826.2540      14310.0230      6703.2856      15374.7880
##   1546.1772_8.02 918.7347_8.057 788.6651_8.049 1576.2067_8.049 788.4624_8.049
## 2      7400.9910     26834.8260     28974.5920      47163.5900      5721.8413
##   1202.3827_8.089 787.4429_8.052 787.1747_8.049 901.7361_8.046 788.4791_8.049
## 2      15047.3470      8742.4740      5992.7470      3997.7410      6112.3823
##   787.1568_8.05 1573.2005_8.05 787.0639_8.049 787.6075_8.051 787.4152_8.05
## 2     7667.6406    693332.7000      5572.2020   2972381.8000     7381.6720
##   787.4054_8.05 789.0553_8.052 788.4066_8.049 787.4705_8.05 887.7206_8.05
## 2    10284.9510      7108.6410      5121.1380     9619.8320    17676.8000
##   789.6103_8.05 787.2199_8.049 788.5214_8.05 788.6624_8.05 787.246_8.049
## 2   137969.9400      7135.8613     7705.8003    28974.5920     5294.0020
##   788.3967_8.051 786.6043_8.051 787.2651_8.051 787.4549_8.049 788.3339_8.051
## 2      4785.5156   5057976.0000      7128.3306      7922.1340      4397.5060
##   787.2508_8.05 1623.2097_7.994 787.2891_8.052 788.4473_8.05 789.0076_8.052
## 2     7128.3306      67560.0100      9301.7000     5244.8296      7598.0586
##   1574.2787_8.051 787.3251_8.05 790.6125_8.05 787.3567_8.05 787.1311_8.049
## 2      19970.3090     8355.4610    24993.3570     8801.4720      4919.2285
##   788.3678_8.051 787.0988_8.052 787.394_8.051 788.5317_8.052 788.5585_8.05
## 2      4608.7680      4709.1510     6810.9150      7705.8003     8609.7760
##   1572.1972_8.051 788.4344_8.049 1624.213_8.033 787.2834_8.051 787.1808_8.051
## 2     713128.7000      5311.0120     31627.4410      6348.5605      5992.7470
##   787.2998_8.051 787.0264_8.052 787.5336_8.052 787.3787_8.051 873.705_8.052
## 2      9301.7000      5334.6816     16162.1090      8637.3880    21801.8070
##   787.4344_8.052 786.998_8.053 789.039_8.054 786.5592_8.053 836.6167_8.053
## 2      8742.4740     5534.2007     8507.6920     13340.0500    164887.2800
##   837.6197_8.054 788.2955_8.051 917.7314_8.057 1574.2746_8.051 1625.2172_8.052
## 2     92194.1600      4771.1570     41920.6450      19970.3090      12292.9170
##   788.4171_8.052 787.5853_8.055 1577.208_8.052 1583.684_8.06 1190.8891_8.06
## 2      5784.9043     11014.6820     12456.6830    18803.3830     19758.0530
##   1584.1871_8.061 1504.14_8.066 809.6525_8.065 1542.1805_8.073 798.0928_8.066
## 2      21277.4650     6772.1220     35540.1330       1776.1273     17759.5550
##   1580.1886_8.021 903.7157_8.069 797.5914_8.07 1512.1341_8.076 1513.1387_8.078
## 2       7128.2500     54982.0400    20372.8700       4902.0320       4631.7810
##   1594.1759_8.08 1596.1936_8.011 1595.1798_8.081 1015.8403_8.077
## 2     37922.5080     237418.1000      43863.7500       4834.1772
##   1534.1768_8.083 1578.1482_8.087 1579.1512_8.088 1531.2124_8.09
## 2       2277.1152       8681.5790       7062.4985      2929.3164
##   1538.1459_8.043 1560.1917_8.095 1561.1945_8.097 1201.8801_8.097
## 2       4576.0415       6615.8640       6840.0800      19030.6540
##   748.5844_8.099 1601.1358_8.098 792.5534_8.102 838.6248_8.065 858.5976_8.109
## 2      7808.4106       2936.8900     20987.0800     27926.5350      9422.0000
##   1505.1673_8.109 844.6529_8.109 1568.1908_8.106 1504.1651_8.11 824.5559_8.11
## 2       4884.8370      9276.4620       2051.2266      6692.3066    11680.5940
##   861.6684_8.111 808.5829_8.112 745.6214_8.115 814.5355_8.122 876.5697_8.13
## 2      8620.0170    225450.6600     33230.9300      4392.0170    14577.0130
##   797.6166_8.131 812.615_8.136 782.6048_8.136 797.622_8.139 813.6188_8.138
## 2     13172.6850    55408.0800     13588.5570    13172.6850     30250.1230
##   718.5742_8.138 796.6199_8.138 740.5559_8.156 804.5876_8.154 803.6626_8.177
## 2     35830.4900     27612.8930      7921.2920      3303.4630      3644.0823
##   738.543_8.181 831.6353_8.196 794.6054_8.214 816.5873_8.216 772.5244_8.234
## 2     3907.0308      7501.3530     17375.9900      5054.9526      6606.4736
##   748.5258_8.233 750.5444_8.236 726.5431_8.239 726.5428_8.237 796.5824_8.278
## 2      5351.6120     14193.0200     10719.5840     10719.5840     15188.2330
##   742.5718_8.28 774.6005_8.288 720.5897_8.289 840.5869_8.291 818.6044_8.299
## 2    10703.9160     62710.8050     45988.0700      2605.9014     11294.8580
##   812.518_8.311 1559.0847_8.317 790.5354_8.318 1536.1002_8.319 869.6735_8.319
## 2    11549.1290       3963.9385     45920.6330       5456.7140      8030.8490
##   855.6577_8.319 1558.0818_8.319 768.554_8.322 766.5713_8.323 1537.103_8.32
## 2     10435.9850       4421.0864   137888.3600      9783.3010     6037.8916
##   861.7043_8.325 1512.129_8.321 744.5895_8.327  859.53_8.35 1603.1463_8.354
## 2      3211.8820      1559.1877     44567.2500    5301.6504       4844.4280
##   1602.1428_8.354 1581.1647_8.356 771.6366_8.357 577.5185_8.358 1580.16_8.36
## 2       4260.9030       6483.5720     19273.0550      9046.0080    6051.5376
##   837.5477_8.363 854.574_8.362 844.6193_8.384 1556.1852_8.372 796.621_8.383
## 2      6388.8820     5900.6200      2343.3713       2861.2085    42591.8100
##   1598.2072_8.389 1599.2108_8.39 797.6421_8.39 1609.235_8.392 870.6724_8.39
## 2       2189.4500      2292.6287    22040.9400      2434.6880     8020.4740
##   798.6518_8.391 768.5859_8.446 1608.2268_8.392 834.5987_8.394 913.7362_8.395
## 2      9237.9250     16053.6450       2900.1672    153612.4200      7233.6950
##   850.5715_8.394 1240.9027_8.395 1647.2081_8.395 1636.2128_8.395
## 2      7632.6410       5042.2656       5742.0024       1433.1611
##   1646.2051_8.395 1241.4043_8.395 870.6699_8.393 823.6064_8.398 943.7468_8.396
## 2       4859.8794       3468.6155      8020.4740      7488.8115     16223.1800
##   1625.2283_8.396 899.7208_8.396 812.6186_8.396 902.5848_8.397 1624.2248_8.397
## 2      28604.9120      6616.0740   1047427.9400     11303.6440      23280.4040
##   829.6782_8.401 1229.9108_8.397 929.7313_8.398 887.6842_8.398 928.5901_8.4
## 2      2905.9430       1786.8480     30229.9940      9576.3630    3768.2612
##   1488.1014_8.407 1579.148_8.401 1556.1645_8.4 812.5816_8.403 1578.1446_8.401
## 2       1599.0760      6521.3916     8926.7280      4463.5210       5768.2610
##   744.5536_8.408 1558.2047_8.408 831.6573_8.408 836.6141_8.438 766.5356_8.411
## 2     67014.3900       5426.7380      6645.1600     67513.0000     17174.8070
##   1559.2145_8.411 1648.2179_8.411 835.6663_8.407 1649.2233_8.415 797.6453_8.401
## 2       4953.9040       4564.8623      3489.7559       4294.2360     18578.6950
##   800.616_8.426 812.5434_8.427 746.6055_8.435 836.6148_8.439 862.6306_8.44
## 2     7890.5930     26353.0020     87903.0400     67513.0000     4183.6226
##   834.5249_8.443 863.7199_8.448 953.7312_8.446 768.587_8.451 858.5977_8.453
## 2      8687.0380      4957.3994      2759.5295    16053.6450     14241.1680
##   838.626_8.451 820.6211_8.471 842.6021_8.473 827.663_8.483 872.6526_8.477
## 2    12044.2730     19120.0120      5486.3965     2012.2316      2843.0916
##   732.589_8.53 822.6349_8.528 816.5872_8.538 911.7203_8.543 1681.1596_8.548
## 2    2401.3503     13368.5080     13415.1080      2542.0745       1467.8942
##   794.6057_8.544 846.6354_8.545 824.616_8.544 627.5345_8.545 904.5911_8.546
## 2     55114.2030      4117.5950     8617.4610     51406.0040    123015.2700
##   887.564_8.547 974.6686_8.55 909.5461_8.55 988.6841_8.551 931.5277_8.561
## 2    59375.2900    16389.7000    76121.2100     12244.3060     18477.8870
##   628.54_8.549 682.5516_8.574 682.5424_8.581 797.6383_8.603 774.5401_8.626
## 2   26479.1230      3619.2190      2558.0005      5545.0244      4538.0350
##   800.6163_8.637 772.6196_8.643 762.6465_8.683 770.6056_8.664 887.7201_8.662
## 2     17393.1390     18083.7420     11254.5070     34141.5270      3043.4792
##   879.715_8.665 762.6007_8.665 762.6003_8.665 792.5873_8.665 784.5827_8.668
## 2     3347.9624     69766.6900     69766.6900      7310.0664     14434.0940
##   783.6251_8.708 760.6411_8.71 761.6436_8.707 603.5342_8.674 885.5458_8.676
## 2     12006.4740   178180.7800     47402.3000     12115.9220     12543.1630
##   880.5906_8.676 881.5938_8.68 863.5639_8.681 863.6636_8.706 798.5401_8.707
## 2     17983.9360     8863.7240     10738.4630      3641.4660     12199.6130
##   776.5588_8.709 864.7169_8.689 782.6223_8.717 759.6382_8.714 781.6192_8.718
## 2     31320.0100      1566.1786     37748.9650    377947.8000     79606.5800
##   913.7359_8.729 818.603_8.731 796.6218_8.731 1592.2329_8.736 1556.2518_8.736
## 2     10978.3260    33741.2660    184381.3600       1825.2245       2584.3364
##   927.7519_8.733 1555.2487_8.735 1581.2641_8.744 1518.2654_8.731 1544.281_8.743
## 2      4942.7180       2985.7680       1573.4025       2188.2922      1780.5391
##   812.6149_8.745 787.6592_8.744 785.6536_8.747 786.6565_8.746 807.6347_8.75
## 2     29369.2540     24286.8890    155052.8800     84624.1950    34807.3670
##   808.6375_8.751 792.551_8.764 770.569_8.759 1096.0441_8.765 1585.2312_8.763
## 2     19958.3960     3824.7146    10167.5220       4770.1170       2009.1298
##   1547.245_8.769 813.6183_8.757 1584.2261_8.767 872.652_8.777 838.6321_8.779
## 2      1813.7694     15552.5370       1495.6147     3547.7883     71823.5000
##   955.7465_8.781 860.6133_8.785 802.5738_8.798 812.6135_8.749 844.6182_8.806
## 2      4056.5420     19085.7480      2034.8574     29369.2540      9798.0690
##   822.6365_8.807 1626.2381_8.815 772.6209_8.839 772.6206_8.839 1560.2277_8.857
## 2     37384.1760       1795.6345     36643.1300     36643.1300       2528.1110
##   895.575_8.852 1610.2416_8.847 1561.2317_8.857 868.5564_8.853 1560.2279_8.857
## 2     9122.6810       1606.6274       2096.7686      8738.1090       2528.1110
##   970.718_8.858 878.5852_8.857 1205.4054_8.863 1193.9116_8.867 1204.9038_8.864
## 2     2072.0452     15522.6260       3425.4846       2413.8950       6387.4320
##   889.7358_8.865 799.6069_8.865 810.5988_8.865 1204.4035_8.865 846.6352_8.854
## 2      6697.9346      6983.0093    162977.5800       4851.0835      3632.3313
##   826.5716_8.868 1599.2099_8.871 788.6177_8.867 875.7207_8.87 919.7465_8.87
## 2      8242.2870       6221.9805    865810.5600     7441.5850    15927.7960
##   1600.2146_8.869 905.7311_8.871 1598.2061_8.871 1576.2251_8.873
## 2       4016.7202     29489.8850       5958.5270      23088.7300
##   1577.2283_8.872 863.6838_8.874 846.6653_8.88 846.6641_8.878  920.75_8.87
## 2      23334.6720      7788.0283     6441.1836      6441.1836    8393.0180
##   862.6249_8.847 798.635_8.894 1562.15_8.919 1541.1702_8.921 1540.1672_8.92
## 2      2585.2780     6228.3520     2620.2407       3824.1492      4577.3970
##   1574.2638_8.923 1573.2611_8.925 1599.2772_8.928 1600.2791_8.929
## 2       6542.3990       6040.3880       5463.1610       5027.1150
##   752.5592_8.969 1540.1695_8.922 634.54_8.941 1424.1384_8.941 835.6566_8.968
## 2    121846.2340       4577.3970   11649.0200       1106.2727     16823.7230
##   807.6349_8.948 1570.2972_8.954 1571.3005_8.952 785.6542_8.953 1618.2939_8.956
## 2    100125.7600       4251.0780       3762.8994    522479.3000       2913.5898
##   1619.2973_8.957 1597.3162_8.956 1226.4736_8.96 1596.3127_8.957 902.7673_8.957
## 2       2636.0408       6456.7925      2384.7297       7183.5527      4785.4880
##   864.6463_8.959 1622.3273_8.96 1623.3314_8.96 1538.2067_8.962 811.6703_8.961
## 2      3853.0010      3328.8547      2920.3967       8198.0080    452180.2000
##   1537.2035_8.961 942.7986_8.961 928.7831_8.964 1563.2185_8.966 1564.2222_8.965
## 2       8158.6310      3112.7622      4864.0244       6779.1787       7188.4610
##   1559.1849_8.966 820.6364_8.966 1560.1891_8.966 1505.1127_8.971 752.5594_8.973
## 2       4831.3480      5543.6120       4781.2480       3282.3630    121846.2340
##   833.6507_8.971 1504.1092_8.971 1585.2008_8.971 1586.2043_8.972 839.6622_8.973
## 2     90670.3750       3353.8713       3973.0388       4660.1130     11185.8020
##   1526.0908_8.976 1527.094_8.977 853.6786_8.975 853.6786_8.974 774.5404_8.982
## 2       2261.3677      2447.8135      6491.6400      6065.3050     33070.9960
##   901.6373_8.994 796.5222_9.007 773.6516_9.025 848.6521_9.028 870.6336_9.039
## 2      5242.9307      6539.7510      5768.3096     10455.5700      3922.0080
##   778.5756_9.056 800.5558_9.058 639.4955_9.064 634.5399_9.061 814.6319_9.087
## 2     21589.3960      9973.2360      9008.7020     17308.4400     45744.3240
##   728.5588_9.081 772.5221_9.085 815.6606_9.084 814.6318_9.087 836.6136_9.086
## 2     36172.3630      4829.6094      6896.4450     43821.0350     12368.0340
##   815.6352_9.088 976.684_9.115 889.5795_9.114 889.5796_9.114 906.6063_9.114
## 2     23855.8630     3964.2112     10294.8530     10294.8530     19006.6900
##   911.5614_9.119 907.6093_9.114 761.6526_9.142 860.6131_9.152 838.6301_9.147
## 2     15033.8630      9790.6840     13240.4760      3334.6848     10393.5520
##   761.6524_9.144 783.6349_9.156 824.6527_9.167 798.6374_9.202 787.6674_9.202
## 2     14064.4000      4326.3877      3069.5030     10325.2540     11397.3890
##   837.6831_9.217 746.5685_9.239 836.6135_9.214 1134.7862_9.281 805.6784_9.291
## 2      2259.9702     23541.2090      5999.7593       2264.9692      3160.8816
##   831.694_9.318 799.6686_9.32 821.6501_9.321 853.6758_9.321 825.6815_9.335
## 2     9682.3840    64151.5080     19314.0740      4403.1426      4570.6104
##   795.6345_9.346 773.6531_9.348 796.6374_9.346 829.6788_9.393 790.5588_9.389
## 2     31471.4530    106267.2400     15768.1130      2430.6433     29043.0450
##   812.5409_9.393 835.6652_9.434 813.6834_9.437 911.5609_9.505 748.6211_9.504
## 2     14324.1460      2862.2705      5873.9604      3171.0100      8226.1540
##   906.6086_9.509 830.6471_9.551 825.6817_9.564 825.682_9.561 825.6778_9.575
## 2      4015.0657      2937.1077      5497.7520     5497.7520      5497.7520
##   799.6692_9.585 821.6503_9.585 889.6375_9.586 824.6537_9.596 865.5795_9.626
## 2    126674.4500     40410.2420      5655.4565      8026.0327      9856.3400
##   882.6062_9.627 605.5497_9.629 887.5614_9.632 610.5401_9.655 874.6674_9.727
## 2     11044.4110     12343.1300     13329.2830     28221.0230      3739.4768
##   946.718_9.767 822.6412_9.776 994.7158_9.773 972.7339_9.773 610.5401_9.784
## 2     4369.6255      3652.0278      3394.0657      6745.5063     26610.0080
##   575.5027_9.782 775.6661_9.814 848.6521_9.817 802.5715_9.823 780.578_9.823
## 2      7375.3936      3828.1284      6023.0610      7545.5100    20116.2090
##   837.6724_9.906 636.5558_9.845 877.6374_9.86 1454.1868_9.88 1428.1716_9.868
## 2     21972.9940     42947.8500     7760.8450      2822.0042       3884.6777
##   790.6308_9.873 836.6696_9.91 809.6507_9.876 825.6241_9.886 1229.9993_9.9
## 2     10953.7200    68698.6640    142217.1200      5103.1763     5663.7266
##   1216.4896_9.892 1596.3093_9.895 822.6567_9.894 904.7835_9.894 787.6701_9.896
## 2       6419.0737       2667.2332      9440.6710      7669.8687    764947.4000
##   918.7987_9.897 1575.3325_9.895 1597.3131_9.894 1216.9911_9.896
## 2      3990.7144       9844.8850       4571.2026       6257.8867
##   1574.3292_9.897 1610.32_9.892 1218.0011_9.9 1205.4975_9.898 1601.3486_9.899
## 2       9586.8050     2037.4537     2942.3462       2605.5000      15603.9630
##   1624.8418_9.901 1612.335_9.9 1600.3452_9.899 1622.3263_9.899 1204.9948_9.897
## 2       1690.1177    3212.6940      17856.8520       6902.9717       2218.2852
##   1623.3297_9.9 1626.36_9.901 1229.4977_9.901 823.1597_9.895 1636.3352_9.901
## 2     6103.9395     7419.6340       5963.9860      9982.1730       1853.3842
##   1218.5051_9.902 813.6866_9.902 1611.8348_9.901 851.64_9.902 1648.3413_9.902
## 2       2684.0940    690934.4400       1809.0951    6419.0205       2774.8425
##   944.8145_9.903 1635.8345_9.901 930.7989_9.903 1627.364_9.902 1231.5117_9.905
## 2      4155.0170       2170.7930      6697.0640      7962.1280       1438.7896
##   1649.3448_9.904 1242.5053_9.906 835.6666_9.91 1637.3363_9.913 1624.3343_9.899
## 2       2797.6785       2477.2144   129321.3500       1596.2676       4526.2295
##   903.6531_9.918 1454.1867_9.904 1455.1905_9.914 811.657_9.886 900.6836_9.96
## 2      7390.5300       2822.0042       2837.3228    22864.7850     3004.9622
##   824.6526_9.963 816.6467_9.969 846.6342_9.978 850.668_9.982 1260.0333_9.997
## 2     22027.6130      9653.9910      6442.0044    21643.2930       1689.8410
##   636.5558_9.995 877.6374_9.988 872.6492_9.995 641.5114_9.997 874.6655_10.042
## 2     56788.6400      7760.8450      6610.9883     25429.3830       4552.4736
##   1285.8106_10.085 1237.8134_10.084 1259.7951_10.087 1263.8289_10.086
## 2        3408.2200        6988.3945        5009.2383        4262.3896
##   848.6549_10.11 839.6989_10.178 802.5716_10.204 893.6243_10.204
## 2      3186.0747       6096.6980       5188.3584       5797.2056
##   903.6531_10.207 780.5795_10.219 835.6664_10.22 1242.5051_10.22
## 2       8449.8540      22486.0720    103869.7700       2082.8200
##   813.6854_10.226 1649.3444_10.225 1626.3599_10.225 1627.3632_10.227
## 2     381365.5300        2159.2188        3409.6960        2932.7860
##   930.7988_10.228 993.7984_10.238 876.6835_10.245 850.6799_10.276
## 2       3466.2046       1542.3507      22272.3380      10435.3720
##   827.6998_10.277 849.6809_10.279 790.6874_10.339 837.6789_10.324
## 2      60154.3360      14998.0840      22034.1110       9877.1330
##   789.6837_10.343 817.7051_10.344 1263.8289_10.349 789.6834_10.343
## 2      40494.2800       6994.6670        5731.1290      40494.2800
##   1136.8021_10.373 784.6654_10.38 810.6812_10.387 827.6999_10.389
## 2        3619.1929     49122.8320      25851.0210      26534.7050
##   1392.1715_10.401 823.6664_10.409 918.7994_10.407 1624.3414_10.412
## 2        3190.6000      62043.8160       4696.2188        2813.8708
##   801.686_10.409 1602.3605_10.41 1603.364_10.411 612.5558_10.456 577.5187_10.46
## 2    692194.6000      11764.9390      12013.2330      77427.2500     32375.0840
##   1251.8293_10.466 576.5712_10.467 1273.811_10.468 638.5716_10.5
## 2        8640.0060       5095.9053       3408.7230   165529.3800
##   827.6999_10.502 828.702_10.497 603.5343_10.505 1061.8543_10.506 974.75_10.504
## 2      25615.8340     15173.9660      34431.8750        3343.0020    11808.7040
##   1281.8397_10.519 620.5974_10.522 602.5849_10.522 646.6126_10.526
## 2        6460.2583      18829.7050       5623.0010      11654.9940
##   798.681_10.534 876.6836_10.537 837.6818_10.567 1631.3955_10.568
## 2     32928.6000      16258.8250      39000.6450       28180.2300
##   1630.3921_10.568 815.7025_10.568 932.8152_10.571 1693.3899_10.581
## 2       28998.0080    1358551.4000      14281.7510        3901.8900
##   1694.3938_10.581 1265.8449_10.582 1266.8482_10.583 878.6996_10.587
## 2        3288.1887       12453.4190        8237.1250      66347.1600
##   852.6843_10.599 812.6971_10.626 634.6121_10.629 794.6868_10.627
## 2      28785.6070      79744.4140      13066.2030       8050.0093
##   829.7155_10.657 604.6026_10.678 622.6132_10.675 648.6287_10.678
## 2      93435.5860      24810.2850      92957.0600      65970.8050
##   630.6177_10.682 750.7353_10.695 766.6703_10.657 636.6288_10.754
## 2      16101.6500      13713.2750       2498.5890      61143.0350
##   618.6182_10.756 1298.1983_10.827 1297.1947_10.828 1301.284_10.831
## 2      18534.6330       14894.1600       15831.9220       9458.5210
##   650.6449_10.83 632.6339_10.83 1300.2808_10.831 1323.2657_10.832
## 2    231979.9800     61316.7150       10455.5960        7166.7656
##   1322.2624_10.832 737.7496_10.83 751.765_10.833 652.6596_10.839
## 2        7450.3690     99716.0400     43819.7660      29194.0640
##   698.6194_10.879 369.3508_10.879 822.6568_10.855 706.612_10.9 367.3357_10.902
## 2       7585.7500       7600.8240       1118.7153     503.6229       2734.6660
##   1312.1372_10.911 536.437_10.971 537.4409_10.971 794.7051_10.958
## 2        1260.3538     15194.1230       6173.0380       1532.0643
##   764.6932_10.985 750.6771_10.977 723.7681_10.986 990.7559_11.04
## 2       3286.6401       4052.7825       6541.2540       503.6229
##   916.7378_11.078 986.8154_11.075 966.7541_11.082 790.6914_11.103
## 2       4055.8555       2141.5740       1308.7278      14667.0980
##   871.6776_11.111 866.723_11.11 897.6938_11.125 1012.8318_11.122
## 2       1971.7200    11646.0570       2771.5180        2667.5410
##   942.7538_11.123 816.7069_11.125 886.7839_11.127 992.7701_11.13
## 2       7002.9956      24550.1150       8966.7450      1220.1979
##   892.7383_11.126 947.7089_11.125 1026.8485_11.128 893.7418_11.129
## 2      13834.8020       1734.7812        1478.2411       9333.2820
##   847.6774_11.153 842.723_11.155 912.7986_11.157 1077.8922_11.168
## 2       4512.6826     35983.4730      12624.6630        3036.9690
##   1052.864_11.17 923.7092_11.174 988.8322_11.176 918.754_11.178 873.694_11.187
## 2      1462.3789       4076.4150       5921.2407     24098.1270      7523.4478
##   873.6937_11.187 1038.8471_11.18 868.7389_11.19 938.8159_11.193 537.4408_11.2
## 2       7523.4478       1416.3619     59879.3550      20733.0400    10269.4940
##   536.437_11.201 973.7251_11.18 899.7091_11.203 964.8324_11.205 978.8481_11.206
## 2     22663.3340      1255.9167       9732.2420      18701.9000       8140.4380
##   894.7548_11.21 895.7581_11.209 949.7248_11.221 792.7074_11.221
## 2     68870.3500      46552.7540       3564.0085      53668.0040
##   1028.8632_11.223 1014.8477_11.222 944.7698_11.221 994.7855_11.222
## 2        2733.2075        5224.7300      21662.3790       1416.0491
##   965.8354_11.205 1064.8634_11.211 823.6785_11.238 818.7234_11.241
## 2      14816.6560        1068.8082      12250.7220     122100.3100
##   888.8006_11.24 979.8509_11.21 880.718_11.248 1651.3848_11.251 966.8463_11.305
## 2     42924.8700      7065.9873     25625.6050        1242.2499      78760.4450
##   1676.3968_11.262 1677.4008_11.264 849.6939_11.262 958.844_11.264
## 2        1796.0378        1726.6401      20410.2400      4713.4663
##   972.8574_11.264 844.7397_11.265 914.817_11.265 928.8321_11.265 984.86_11.28
## 2       2451.9100     204800.8000     66042.9300      29528.2870    4351.0660
##   970.786_11.284 875.7095_11.292 870.7558_11.296 940.8331_11.297
## 2      7937.1480      30375.4340     324633.8400     108197.8600
##   925.7249_11.296 954.8481_11.299 996.8_11.288 990.8484_11.304 920.7705_11.302
## 2      10130.7440      44881.9300    1424.0710      21417.8360      85782.5700
##   967.8518_11.315 1004.8642_11.302 896.7714_11.316 980.8638_11.316
## 2      52803.0660        8446.4310     248298.4800      32281.8000
##   980.8635_11.316 966.8486_11.316 896.7712_11.316 901.7251_11.318
## 2      32281.8000      78760.4450     248298.4800      24962.9080
##   832.7384_11.319 1030.8788_11.336 1016.8631_11.335 946.7855_11.335
## 2      20185.0740        5249.5107       12976.7540      45298.5660
##   951.7402_11.339 863.7092_11.343 858.7545_11.345 972.8_11.345 1678.4082_11.291
## 2       5979.0874       4331.8610      38934.5350    6095.9890        1496.6875
##   897.7743_11.318 794.7232_11.353 864.8008_11.354 1603.3857_11.359
## 2     159883.8400      83499.6600      35786.2300        1324.0599
##   1602.3814_11.358 884.7697_11.358 1629.4012_11.367 1628.3971_11.365
## 2        1567.7642      22661.8000        2671.4620        3046.2450
##   820.7395_11.368 942.849_11.418 927.7399_11.374 1654.4129_11.376
## 2     301490.2000    478812.5600      12192.0160        4399.8080
##   1655.4167_11.377 934.7878_11.376 992.8634_11.384 851.7097_11.384
## 2        4814.8080       3561.1330      46830.5660      37883.4060
##   968.863_11.436 1006.8788_11.385 1680.4284_11.386 922.7862_11.386
## 2    199250.5200       19874.9860        8051.8286     174604.8400
##   1681.4323_11.387 846.7559_11.39 930.848_11.39 916.8333_11.39 872.7731_11.418
## 2        7821.1704    682281.0600   114990.0900    257165.2500    1616521.8000
##   877.7253_11.418 956.8644_11.419 942.8496_11.419 872.7324_11.418 924.8_11.503
## 2      60751.1130     203498.6000     478812.5600       9127.0020  217531.5300
##   898.7872_11.44 982.8793_11.44 968.8643_11.442 971.877_11.497 903.7406_11.457
## 2    669157.7000     92480.0700     199250.5200     17941.2070      37241.9920
##   834.7543_11.459 1018.8786_11.465 948.8005_11.465 1032.894_11.465
## 2      47546.9900       10522.3040      41912.8870       4827.4473
##   953.7558_11.474 974.8146_11.474 860.7704_11.477 865.7253_11.477
## 2       3773.4314       6077.1630     140002.2000      11221.6790
##   936.8015_11.483 891.7406_11.489 886.7858_11.492 929.7558_11.499
## 2       4311.1226       8177.3180      89998.2700      14997.7480
##   994.8787_11.507 1020.8931_11.508 1008.8943_11.508 1034.9093_11.511
## 2      61630.4180        7597.8490       25257.6680        3466.2903
##   1633.4321_11.51 924.8016_11.511 950.8156_11.512 1628.4765_11.515
## 2       2025.4548     228336.0500      27785.3790        1713.1843
##   1658.4443_11.517 892.8326_11.516 1659.4478_11.517 822.755_11.516
## 2        6331.3030     145534.3100        5374.6123    287093.4000
##   1653.489_11.522 1654.4923_11.523 1684.4596_11.522 1685.4637_11.522
## 2       3217.0054        3502.0134        7813.4136       11191.2860
##   951.819_11.515 848.7717_11.527 1679.5046_11.53 1680.5083_11.531
## 2     20169.0200     967240.2000       6822.7740        7704.7427
##   876.6825_11.558 877.7965_11.559 944.8656_11.558 958.8804_11.56
## 2       3346.4666     122302.6640     890314.0000    398300.1600
##   874.7892_11.559 874.7461_11.559 875.5569_11.56 876.854_11.56 820.6961_11.574
## 2    3172819.5000      15439.8930      2351.3545    21837.2010       4369.5210
##   879.7408_11.578 912.8727_11.58 688.6024_11.581 900.803_11.585 970.8801_11.587
## 2      48040.1050      6471.0737      21189.0570   1112878.0000     325268.1000
##   984.8952_11.587 905.7564_11.605 950.8167_11.564 1020.8946_11.578
## 2     149427.5600      44519.5300      27785.3790        7168.3706
##   976.8319_11.618 927.8194_11.647 862.7859_11.623 1034.911_11.594
## 2       3982.1274      77872.8200     222026.7300       2552.7888
##   955.7715_11.624 996.8931_11.636 1010.9091_11.638 888.8014_11.642
## 2       1778.2245      34972.3000       17250.7500     190564.5000
##   1416.1569_11.643 714.6184_11.643 1417.1607_11.643 893.7563_11.645
## 2        1047.7401     102431.1640        1195.3859      23155.9860
##   931.7715_11.646 926.8159_11.647 719.5732_11.65 1022.9086_11.654
## 2      15659.1980     114237.9450      6053.1020        8046.4526
##   1036.925_11.654 1366.1408_11.655 957.7865_11.655 1367.1442_11.655
## 2       4327.8200        2090.9631       4914.2324        1783.4105
##   952.831_11.66 978.8456_11.66 1316.1245_11.664 1317.1277_11.664
## 2    27333.9430      2786.0613        2743.7852        3071.8890
##   664.6011_11.668 1311.1692_11.669 1312.1724_11.668 928.8306_11.753
## 2      34742.4400        3528.9402        2835.1895      67667.6640
##   1689.4913_11.681 1688.4878_11.681 1657.5142_11.686 1683.5318_11.692
## 2        5808.5100        4370.8804         503.6229        5529.8125
##   1684.5352_11.693 960.8944_11.707 946.8797_11.708 876.8035_11.712
## 2        6383.3037     428250.1600     899821.7500    3226125.5000
##   879.8107_11.711 902.8168_11.73 876.7617_11.713 878.587_11.712 972.8948_11.737
## 2     120675.1250    895668.6000      17487.1330      2670.4592     269066.0600
##   902.8182_11.738 986.9104_11.739 1554.3397_11.745 1555.3432_11.744
## 2    1224358.8000     127751.4900        4530.2593        3650.8150
##   1041.9353_11.754 1363.2025_11.753 1364.2059_11.753 690.6188_11.754
## 2        2514.9795       24606.1390       25608.9410     252108.4400
##   673.5905_11.756 1369.1611_11.766 1368.1577_11.767 907.7722_11.767
## 2       8385.0060       16062.5750       14618.8570      60527.9300
##   928.8317_11.769 695.5729_11.772 1012.925_11.773 998.9084_11.775
## 2      67667.6640      14446.9390       9726.1090      22197.7090
##   933.7875_11.787 1339.2017_11.786 1344.1575_11.789 1345.161_11.79
## 2      11010.6820        3396.5154        8898.4680      7879.2250
##   895.7721_11.798 890.8172_11.801 1268.1254_11.807 1295.1453_11.81
## 2      39354.1840     222009.8100        4658.1943      10834.8230
##   1294.1419_11.81 1263.1707_11.815 991.9207_11.815 1289.1866_11.82
## 2      11917.8960        3417.1736       4366.9340      12816.2420
##   1290.1901_11.819 1320.1579_11.832 1321.1613_11.836 369.3517_11.844
## 2       14974.6510       39232.8050       39623.7000     182142.1200
##   1322.1646_11.831 666.619_11.852 370.3549_11.851 1298.1748_11.858
## 2       24688.4920    524568.4400      54212.8670        6319.6870
##   1299.1785_11.856 1017.9359_11.856 1318.2126_11.857 1316.2069_11.859
## 2        6578.4690       25785.3770       28259.0700      165839.2000
##   1315.2035_11.858 1341.2177_11.895 1342.2211_11.896 692.6335_11.899
## 2      159781.9500        7678.6963        8293.4130      46673.7700
##   693.6368_11.899 1532.3557_11.908 1346.1728_11.908 1347.1765_11.909
## 2      23759.4550        3606.4485        6072.4260        6827.9200
##   904.8336_11.91 1558.3711_11.912 988.9264_11.914 974.911_11.915
## 2    709680.4400        4606.4585      99856.6250    219563.4200
##   930.8479_11.919 1000.9255_11.924 1014.9413_11.924 1334.1724_11.947
## 2      77632.0200       26061.6200       12150.8350        1344.1984
##   956.8628_11.946 1308.157_11.948 1322.172_12.024 1350.2033_12.028
## 2       8415.5060       1872.2688       4146.2305        2119.1028
##   1324.1888_12.056 1325.1924_12.055 1299.1762_12.078 370.3549_12.075
## 2       27354.7800       28560.8160       15242.0160      53898.5500
##   1019.9516_12.075 1319.2346_12.075 1303.2104_12.075 1302.2067_12.075
## 2       54721.5500      125490.6000       15517.7540       16427.4260
##   1320.238_12.076 668.6342_12.074 1277.1948_12.078 369.3518_12.077
## 2     123558.3700     166722.5600       12821.5625     186192.3300
##   1294.2217_12.077 1268.2053_12.079 1293.2183_12.078 1326.1956_12.056
## 2       50350.7700        4661.6890       53581.9500       15722.6530
##   1267.2019_12.079 1276.1913_12.079 1250.1754_12.08 642.6107_12.077
## 2        5505.1060       13411.2990       4338.9240      13245.4710
##   1298.1727_12.089 1272.1559_12.098 1028.9572_12.137 963.8345_12.135
## 2       15940.2180        2504.3152        7405.4510       6037.5570
##   984.8939_12.149 1329.2228_12.335 1328.2189_12.336
## 2       4043.2595        2327.4583        2329.1943
# change to results to numeric
data_notame <- data_notame %>%
  mutate_at(-1, as.numeric)

head(data_notame, n = 1)
##                     mz_rt 189.1598_0.513 104.1071_0.537 184.0946_0.54
## 2 x5109_b1_beta_c18pos_65       5393.717       173277.3         51759
##   162.1126_0.545 204.1231_0.589 265.2403_0.591 144.102_0.595 118.0864_0.597
## 2       144957.5       35302.47       25206.29      496116.2       213544.2
##   337.0619_0.611 132.102_0.612 623.1355_0.614 116.0707_0.623 645.1222_0.627
## 2       54898.49      54694.32       11556.97       33922.21       12947.25
##   293.0984_0.628 100.0757_0.629 160.0606_0.629 353.0342_0.629 172.1333_0.62
## 2       669172.9       35459.49       98662.82       26301.62      39135.14
##   120.0808_0.631 166.0861_0.629 258.1105_0.632 310.2012_0.633 188.0707_0.633
## 2       42466.13       49830.12       8127.888       22907.95       38425.38
##   629.1522_0.633 308.1855_0.633 286.2013_0.633 331.0535_0.634 167.0891_0.631
## 2       27773.81       1071.162       37006.47       115179.9       6466.679
##   247.1441_0.636 315.0805_0.637 256.1695_0.637 277.1263_0.644 332.243_0.64
## 2       19227.89       835308.9       503.6229       1397.252      6094.11
##   398.3413_0.639 585.2705_0.643 660.0815_0.643 265.1183_0.643 272.1651_0.645
## 2       503.6229         106325       6281.265        25677.9       1143.596
##   235.0925_0.646 152.0706_0.642 682.0633_0.646 207.1109_0.641 287.1003_0.648
## 2       21110.93       503.6229       4690.715       503.6229       14763.28
##   314.2326_0.654 464.1914_0.656 293.1101_0.657 338.065_0.618 377.2467_0.663
## 2       98041.81       2922.865       13778.01       9382.85       14033.57
##   328.2481_0.675 634.4366_0.676 316.2483_0.679 316.2608_0.679 340.2481_0.684
## 2       18997.65       3395.837       172184.2       10606.57       8409.402
##   648.4519_0.687 692.4782_0.686 736.5043_0.684 533.3253_0.69 706.4934_0.689
## 2        5077.35       4088.035       2706.916      503.6229       3497.064
##   330.2637_0.689 515.3654_0.688 588.4113_0.688 368.2792_0.689 750.52_0.687
## 2       9743.125        3182.81       1957.799       10114.12     2877.078
##   342.2638_0.69 508.3578_0.689 346.0093_0.691 240.1585_0.692 643.38_0.69
## 2      34116.93       3075.123       25780.42       503.6229    1043.223
##   356.2794_0.691 363.2166_0.691 254.1387_0.695 344.2792_0.693 205.1221_0.621
## 2       5844.374       7206.663       503.6229       7690.018       5093.727
##   259.0944_0.697 616.1763_0.702 425.1649_0.679 423.1686_0.697 429.24_0.73
## 2       503.6229       4483.476       503.6229       503.6229    1073.373
##   346.0093_0.919 616.1763_0.902 383.1533_0.931 344.2793_0.927 466.3162_1.004
## 2        22806.4       2304.904       503.6229        8477.92       503.6229
##   167.0854_1.05 308.1256_1.117 286.1437_1.13 373.2483_1.147 353.079_1.243
## 2      503.6229       1220.951      9559.344        2644.51      503.6229
##   337.1048_1.268 315.1224_1.279 585.2701_1.361 450.3212_1.383 426.3213_1.384
## 2       1094.075       503.6229       16384.21       4375.302       1517.117
##   413.2797_1.415 399.2641_1.416 312.1597_1.413 463.2323_1.708 531.2196_1.712
## 2       1245.323       1691.521       1938.883       1366.684       1879.289
##   526.2644_1.714 424.3418_1.822 163.0753_1.983 365.1356_1.988 343.1537_2.002
## 2       2830.343       12478.95        1823.27        1293.21       1224.583
##   430.2589_1.992 400.3418_2.122 542.3237_2.234 426.3575_2.274 518.3238_2.281
## 2       503.6229       20248.24       15779.09        25978.1        10080.8
##   468.3082_2.293 516.3057_2.488 494.3238_2.494 590.3212_2.604 568.3394_2.605
## 2       36834.36       6834.443        41801.2        7841.76       42264.55
##   445.2944_2.63 566.3214_2.69 536.2833_2.749 544.34_2.697 482.3238_2.701
## 2      2599.151       56812.7       2144.942     368163.5       43307.03
##   1087.6686_2.703 1085.6532_2.71 1063.67_2.714 1001.6557_2.715 526.2925_2.719
## 2        8532.202        11860.9      45158.13        5241.096       19726.09
##   1128.671_2.722 1045.6241_2.726 578.3923_2.734 522.3458_2.735 1039.6724_2.735
## 2       3874.508        4286.007       8663.166       104104.3        141075.4
##   1050.6573_2.737 1580.9848_2.737 637.4547_2.737 520.3416_2.737 854.4963_2.738
## 2         3425.48        2591.293        9267.76        2110536       1008.148
##   1061.6537_2.738 558.2953_2.739 801.9871_2.739 1051.1585_2.738 802.4888_2.74
## 2        37508.34       25146.85       6660.126        4586.067      5628.042
##   1077.6264_2.732 542.3219_2.742 1321.82_2.739 428.3732_2.759 603.2923_2.783
## 2        2352.143       216674.8      1340.773       22848.51       3954.632
##   524.2743_2.81 502.2925_2.81 570.3547_2.836 500.2744_2.854 478.2926_2.855
## 2       9483.88      45643.72       18142.38       12592.04       59690.58
##   508.3393_2.879 568.337_2.996 546.3554_2.996 1041.6857_3.056 1041.6842_3.059
## 2       8472.406      19313.49       96251.14         7538.01         7538.01
##   518.322_3.062 534.2952_3.067 766.4889_3.074 765.9874_3.073 554.3925_3.077
## 2      261189.1       29635.33       12595.91       14793.69       14094.73
##   515.313_3.077 762.9789_3.079 1002.658_3.079 1029.627_3.079 1003.1594_3.079
## 2      6508.718        3456.11       12248.12       7750.699        12764.03
##   1018.1281_3.082 1250.8236_3.081 1013.6543_3.08 1011.1465_3.08 1258.8122_3.08
## 2        3244.351        3285.566       134102.8       4763.765       4368.292
##   1010.6446_3.081 1508.9859_3.081 1261.821_3.081 1018.6298_3.081 496.6809_3.081
## 2        3859.514        23519.38       12869.56        4046.246       4457.254
##   1509.9892_3.081 583.4441_3.082 597.4596_3.082 498.346_3.082 627.4702_3.082
## 2        21969.56          12773       8819.312      195381.3       10046.37
##   1487.0039_3.082 991.6743_3.082 496.342_3.082 613.4547_3.084 519.3249_3.064
## 2        15511.97       879353.2       4294420       17320.18       74408.87
##   1026.6606_3.098 1339.8437_3.087 1017.6873_3.095 1039.6688_3.106
## 2        3632.041        503.6229        57205.26        12549.96
##   844.5121_3.103 454.2925_3.202 560.3108_3.237 522.3564_3.24 639.47_3.238
## 2       1817.037       27750.66       17206.49       1083036     5109.145
##   1043.703_3.238 544.3374_3.238 1065.6846_3.239 805.0108_3.238 572.3709_3.254
## 2       42585.41       173100.4        13565.86       3742.731       11761.46
##   502.2902_3.355 480.3082_3.357 480.3446_3.381 482.3601_3.403 504.3422_3.406
## 2       12590.91       50793.16       30530.71       30982.69       6784.817
##   548.3709_3.408 510.3551_3.445 438.2976_3.525 508.3757_3.535 808.0344_3.778
## 2       13561.27       46895.31       13126.19       19657.02       9954.235
##   582.4238_3.778 808.536_3.778 1059.2224_3.779 1069.7165_3.778 1571.0972_3.779
## 2       6841.065      8679.472        2830.685        38131.31        1797.102
##   524.373_3.779 562.3265_3.778 1593.0791_3.779 1047.7355_3.778 1331.8987_3.778
## 2       2038640       20471.24         3281.99        137818.2        2004.737
##   611.4752_3.779 641.486_3.779 526.3772_3.778 1012.7169_3.78 1594.0825_3.778
## 2       7494.673      14114.69       105510.5        3057.31        3136.277
##   546.3534_3.779 614.3398_3.784 550.3862_3.859 482.3239_3.884 504.3061_3.884
## 2       276992.4       11940.78       14665.81       47507.31       17674.91
##   585.2706_3.939 1191.515_3.94 607.2524_3.94 299.139_3.94 686.3908_3.94
## 2       146034.2      16599.96       52378.4     24249.07      6995.175
##   672.3751_3.941 1169.5332_3.94 1213.4964_3.94 629.2342_3.942 508.3754_4.012
## 2       18887.17       25512.06       6557.705       15115.13       6429.108
##   510.3914_4.038 538.3859_4.051 664.5997_4.075 466.3289_4.123 541.3858_4.202
## 2       14236.21       5810.855       503.6229       17835.53       2574.608
##   561.4122_4.23 521.4196_4.236 539.4303_4.244 563.4268_4.262 317.2685_4.264
## 2      23843.74       33456.54       10956.25       12931.34        7061.09
##   552.4018_4.301 593.4768_4.312 563.4273_4.415 619.4811_4.462 798.5661_4.516
## 2       10377.73       5784.829          18468       3092.176       503.6229
##   593.4757_4.54 712.5953_4.577 569.4277_4.639 568.4266_4.64 543.4017_4.622
## 2      4907.904       1515.657        5953.48      12313.46       4421.932
##   617.4748_4.643 593.4762_4.644 595.4929_4.645 577.4817_4.655 515.3703_4.774
## 2       41282.35       5630.025       18788.27       6552.479       1753.653
##   774.5634_4.81 822.5634_4.827 596.4154_4.906 620.4935_4.951 317.2685_4.946
## 2      1473.547       503.6229        2267.32       8821.808        13718.4
##   641.4722_4.95 619.4903_4.953 647.5118_4.967 669.4937_4.965 800.5792_5.005
## 2      4980.564       20838.72       16498.73       3707.525         1091.9
##   798.5655_5.067 695.5093_5.094 673.5278_5.092 669.5575_5.14 610.431_5.16
## 2       1007.246       8457.689       31376.89       2030.23     4867.011
##   597.5086_5.242 822.563_5.243 798.564_5.251 592.4686_5.28 683.5094_5.286
## 2       4058.869      503.6229      503.6229      4339.037       3237.377
##   661.5282_5.288 719.5696_5.337 802.5954_5.397 752.5219_5.513 608.4637_5.649
## 2       11441.75       3824.059       503.6229       2898.786       4542.179
##   1372.06_5.66 834.5932_5.658 765.5124_5.66 1350.0784_5.66 697.5255_5.661
## 2     1504.125       7477.324      10079.44       2835.277       106392.8
##   675.5442_5.66 713.5011_5.661 755.4833_5.662 1035.2944_5.66 834.5933_5.658
## 2      386197.2       3942.706       6335.622       2901.371       8029.474
##   754.5378_5.732 678.5059_5.698 826.5945_5.722 828.5522_5.728 860.609_5.81
## 2       3039.894       5521.155       503.6229       1888.697     6816.476
##   791.5279_5.817 1424.0918_5.818 739.5144_5.819 723.5413_5.819 1074.3179_5.819
## 2       10553.44        3385.897       5583.948       144145.3        3523.327
##   1402.1101_5.819 1403.1135_5.82 1425.0951_5.82 701.5604_5.818 1073.8159_5.82
## 2        4824.275       5107.778       2573.156       599996.9       2832.278
##   1227.7565_5.834 804.5524_5.837 826.5347_5.837 1249.7383_5.838 778.5376_5.842
## 2        12203.02          12628        3870.69        8835.819       12066.24
##   800.5194_5.843 614.3823_5.849 780.5532_5.895 781.5567_5.896 894.5999_5.902
## 2        2907.38       3563.692       11540.62       6917.907       503.6229
##   796.5458_5.943 774.5637_5.944 518.4564_5.944 532.4721_5.945 699.5412_5.971
## 2       3604.923       13888.01       11549.34       7264.864       3503.865
##   677.5586_5.973 826.5348_5.993 677.5582_5.973 826.594_5.988 776.5195_6.001
## 2       13189.33       2856.227       13189.33      503.6229       11136.42
##   754.5373_6.002 1378.109_6.06 689.5597_6.062 711.5408_6.063 870.596_6.054
## 2       40443.72      1011.074       200887.3       50749.24      1772.125
##   1460.0658_6.066 1419.0884_6.065 721.5835_6.066 749.5557_6.066 727.5745_6.067
## 2        503.6229         1109.91       9074.263       5750.457       19276.98
##   847.6527_6.068 721.5846_6.067 730.5383_6.068 752.5201_6.07 768.4931_6.068
## 2       2905.475       9074.263       114104.4      27510.76       1770.284
##   854.5686_6.074 719.5692_6.151 741.551_6.153 1024.6773_6.157 1046.6591_6.159
## 2        6152.89        15576.9      4452.868        10911.22        6503.981
##   836.4936_6.219 846.5226_6.22 873.6685_6.266 778.5354_6.223 756.5541_6.24
## 2       4037.495      4128.233       2879.385       25760.33      110201.8
##   852.5506_6.226 830.568_6.228 852.5508_6.228 715.5745_6.252 814.535_6.26
## 2       5595.419      18959.27       5595.419        15226.4     3462.799
##   792.5531_6.261 1282.9156_6.311 860.4936_6.313 870.5225_6.318 1192.8093_6.322
## 2       12696.33        1923.939        6466.28       9003.215        2011.703
##   887.5125_6.318 803.037_6.321 855.6216_6.322 838.606_6.327 802.5357_6.323
## 2       6353.087      3670.396       3051.434      1869.002       91769.53
##   867.6575_6.328 897.6684_6.323 1583.0843_6.325 1582.0806_6.324 818.5091_6.325
## 2       2372.927       11467.24        1582.399        1568.461       4040.898
##   1332.9345_6.33 1181.3124_6.332 780.5549_6.325 1560.0983_6.326 1572.0922_6.339
## 2       503.6229        1025.953       368834.2        4451.918        503.6229
##   1561.1021_6.326 911.6839_6.326 1083.7892_6.33 791.5397_6.411 1536.0989_6.339
## 2         4407.13       6154.823        2970.02        6074.74        2921.405
##   1180.809_6.327 1586.1131_6.353 1537.1023_6.339 815.5406_6.313 1558.081_6.341
## 2       1127.522        3110.242        2659.378       3513.512       503.6229
##   856.5843_6.351 1584.092_6.345 808.5757_6.369 1563.1161_6.369 806.5698_6.37
## 2       4378.549       1198.424       29549.92        2475.094      195438.1
##   937.6995_6.371 807.5729_6.37 1612.1288_6.374 1613.1329_6.372 1562.1109_6.352
## 2       2721.302      102868.9        1763.787        1275.695        3185.352
##   896.5379_6.373 828.5511_6.373 756.5542_6.373 923.684_6.374 1513.1028_6.383
## 2       4877.083       45829.29       125456.4       6563.71        1131.322
##   778.5355_6.376 873.6684_6.375 1512.0991_6.376 887.6837_6.371 783.5732_6.445
## 2       29409.03       4166.919        503.6229       1988.407       331912.1
##   691.5742_6.403 1586.1128_6.4 862.5091_6.42 1587.1171_6.406 790.5352_6.424
## 2       3770.091      4523.083      5067.804        4852.676       10887.09
##   872.5379_6.428 804.5511_6.435 768.5536_6.434 857.6371_6.438 1195.8324_6.435
## 2       8783.236       111106.5        55822.8       5338.684        2865.332
##   820.5246_6.44 899.684_6.44 869.6734_6.444 1551.1176_6.447 765.0535_6.446
## 2      6667.659     17594.67       3180.421        3467.197       6213.062
##   913.6995_6.445 1155.8333_6.446 1156.3359_6.446 1588.1268_6.447
## 2        8412.68        3080.686        4607.505        6853.002
##   1588.1294_6.449 1550.1138_6.449 782.5712_6.447 1536.6212_6.45 840.6219_6.452
## 2        6853.002        4199.678         678390       1190.592       6660.055
##   884.6064_6.452 1589.1333_6.45 1538.1147_6.455 1536.1192_6.444 1564.1312_6.455
## 2        9413.58        5112.16        5550.979        1409.711        19175.45
##   1565.1348_6.456 1539.1179_6.455 1496.1206_6.463 1496.6252_6.461
## 2         18705.8         4691.44        2144.165        2699.307
##   1116.8381_6.462 1497.1271_6.467 1508.122_6.465 1507.1178_6.465
## 2        8629.759        2977.185       10895.97        13234.06
##   1472.1218_6.472 862.6247_6.471 1468.623_6.472 1468.1206_6.471 1471.118_6.473
## 2        3205.907       29764.36       5167.526        5868.002       5601.302
##   1509.1328_6.475 1457.6299_6.479 1486.1407_6.477 1457.1286_6.478
## 2        11411.89        4680.134        61512.78        5138.557
##   1485.1374_6.478 1527.117_6.481 1565.1864_6.477 1526.1136_6.481 1510.1375_6.48
## 2        60516.32       6122.256        4547.977        6177.338       9231.854
##   1483.1167_6.498 704.4038_6.503 704.3938_6.501 704.5181_6.5 706.5843_6.5
## 2        3701.038        2979.16       3859.773     5754.961     62212.01
##   703.8986_6.501 703.9516_6.503 705.6376_6.502 703.5779_6.502 704.5113_6.501
## 2       4795.362       4313.908       12838.21        3894128       4318.408
##   1469.1118_6.499 1406.1439_6.504 834.7053_6.506 1448.1242_6.506
## 2        6197.371        201903.3       8837.926        23742.54
##   1418.1346_6.507 1447.1208_6.507 820.6896_6.508 1417.6332_6.508 1065.848_6.509
## 2        11429.71        28251.12       14094.65        11612.35        5100.89
##   1066.3498_6.509 1469.1116_6.5 744.5538_6.51 1459.1207_6.512 1419.1345_6.509
## 2         7944.83      6197.371      130015.8        21799.07         4790.94
##   1428.1239_6.513 1429.1272_6.513 1460.1239_6.512 1489.1055_6.52
## 2        38435.32        39882.62         19428.6       3819.562
##   1500.0993_6.518 1512.1013_6.516 758.5603_6.497 1444.1182_6.522
## 2         2863.62         1807.76       16470.03        2425.514
##   1451.0918_6.532 1077.3414_6.528 1411.1131_6.529 757.5569_6.495 1481.1047_6.53
## 2        1944.388        19003.99        4645.933       54360.38       4764.314
##   1482.1063_6.531 1479.1431_6.532 1410.1118_6.532 741.5301_6.535
## 2        3807.777          1477.4        9581.128        13782.2
##   1463.0927_6.535 1413.0725_6.543 1443.1241_6.536 1431.0932_6.55 725.5571_6.544
## 2        1717.434         1060.23        503.6229       2014.533       260720.5
##   706.5381_6.548 1409.1106_6.553 1187.9262_6.553 776.579_6.552 823.6523_6.559
## 2       93600.58        6711.315        4113.951      13343.06       3093.488
##   728.5196_6.564 794.5671_6.58 762.541_6.576 445.3676_6.577 795.5713_6.591
## 2       16527.31       9425.65      1313.938       109687.9       4672.062
##   738.5064_6.603 1175.7015_6.637 1153.7198_6.64 822.6001_6.635 770.5692_6.675
## 2       2870.319        6597.094       11591.68       503.6229       20639.82
##   886.5092_6.697 1576.1291_6.701 751.5715_6.701 1192.8412_6.709 807.3448_6.714
## 2       6770.491        2247.034       44493.56        4918.515       2046.742
##   1193.3431_6.71 1232.3347_6.716 1557.1328_6.71 1585.1303_6.711 1558.1357_6.713
## 2       5770.275        7525.565       4170.914        2856.057        3915.788
##   818.0604_6.711 1458.1721_6.714 1585.6318_6.711 729.5912_6.714 1635.1157_6.712
## 2       4732.001        2063.349        2523.966       306413.6        17849.02
##   1634.1123_6.713 923.6842_6.713 1536.1554_6.715 1535.1521_6.713 806.5725_6.713
## 2        15352.74        32366.5        17665.03        17672.51        1990779
##   896.5381_6.715 1586.1251_6.718 1597.1201_6.716 893.6733_6.713 1623.6198_6.714
## 2       12253.86        2667.938        2787.466       6461.125        3466.673
##   1596.1232_6.714 808.6366_6.716 937.6999_6.715 1612.1323_6.715 907.689_6.715
## 2        2560.059       11384.07       19629.97        77630.02      4811.047
##   1624.1217_6.715 1613.1357_6.716 1596.6247_6.715 1231.8327_6.718
## 2        5639.593        80207.57        2719.564        8712.688
##   1540.1229_6.721 1597.613_6.72 1539.1194_6.72 1538.1166_6.72 829.5547_6.726
## 2        18157.97      3647.161        30808.2       31225.44       112573.4
##   1462.1391_6.719 806.973_6.716 1624.6226_6.715 1461.136_6.721 1598.1117_6.724
## 2        3168.688      1876.863        3109.778       3381.061        3605.303
##   844.5247_6.723 881.6374_6.724 1465.1023_6.726 1194.3346_6.723 1561.1011_6.726
## 2       12924.33       8552.931        3474.738        4337.534         5940.24
##   732.5542_6.723 1560.0999_6.725 828.5517_6.726 1464.0995_6.726 863.6839_6.733
## 2       276055.4        6536.032       217082.3        3964.644       3554.819
##   1486.0818_6.746 830.5605_6.803 1588.1294_6.745 819.6577_6.728 810.5875_6.727
## 2        1056.584       36147.89         6560.44       2858.344       16855.02
##   864.6223_6.744 791.5433_6.743 849.6682_6.746 1570.1174_6.785 1571.1203_6.766
## 2       9567.526       4449.957       8039.013        2437.093        1673.151
##   1232.8362_6.721 1564.133_6.867 752.574_6.803 1639.1441_6.788 764.5588_6.812
## 2        6162.027        1592.23      22218.88        1738.531       19950.18
##   1389.0311_6.813 446.3707_6.814 829.5548_6.746 848.6162_6.816 1547.1209_6.83
## 2        2245.297       15048.38       112573.4       1549.012       1851.035
##   445.3675_6.816 786.5403_6.817 1610.1103_6.827 816.5509_6.821 794.5677_6.822
## 2       44383.05       13006.08        2360.677       12866.78       23135.77
##   770.5691_6.825 756.5471_6.823 752.5739_6.808 754.5356_6.825 830.5623_6.824
## 2       45051.02       13398.25       21862.45       82551.06       44440.26
##   775.6384_6.825 1638.1373_6.816 751.5717_6.812 889.5277_6.826 792.5512_6.827
## 2        9095.53        2424.075       41401.25       12069.74       31182.04
##   1189.3305_6.84 862.5095_6.827 429.3727_6.826 812.5558_6.826 740.5662_6.833
## 2       2290.845       12648.29       29734.88       9023.723       11398.99
##   717.5903_6.828 827.6071_6.849 718.5932_6.828 725.5564_6.829 788.554_6.828
## 2       31804.75       6890.672       18248.29       6774.083       7176.18
##   824.5758_6.83 1233.3393_6.794 703.5745_6.822 1546.1205_6.851 806.6235_6.835
## 2      5052.685        2624.717       17905.92        2267.558       8408.094
##   1664.1589_6.841 1341.0272_6.83 1536.1083_6.846 802.5963_6.831 790.5738_6.832
## 2        503.6229       1807.081        4108.062       5939.143       14675.88
##   791.5771_6.835 870.5402_6.834 854.5671_6.833 762.5403_6.835 742.5356_6.834
## 2       10014.84       5618.031       95410.94       5182.002       11383.88
##   1363.015_6.835 742.5728_6.833 1365.0287_6.836 800.5726_6.827 793.556_6.829
## 2       4216.765       6285.115        6167.119       2866.086      19775.47
##   1339.0138_6.829 820.5836_6.837 755.6054_6.838 720.5531_6.843 949.6995_6.841
## 2        1964.223       3550.497       12663.03          20646       3175.722
##   1207.3311_6.841 832.5855_6.839 740.5626_6.841 780.5519_6.84 963.7151_6.844
## 2        3592.237       215492.3       11398.99      268613.8       2147.896
##   805.617_6.84 1170.3294_6.844 740.5609_6.842 727.5724_6.844 1169.3422_6.843
## 2     23781.82        5499.694       11398.99       71935.27        2549.335
##   1208.3368_6.844 1221.342_6.847 796.5247_6.843 1208.8392_6.844 804.553_6.847
## 2        8168.149       8990.758       13196.66        8508.403       1490167
##   1220.8404_6.847 1171.3299_6.847 822.528_6.849 1490.1152_6.846 706.5938_6.852
## 2           11420        6874.279      12749.64        2711.425       67258.38
##   1637.1286_6.848 820.5251_6.85 1537.126_6.857 1550.1223_6.858 705.5909_6.851
## 2        4997.227      56154.94       5891.694        4848.113       164496.8
##   1611.1156_6.852 1144.8407_6.848 1599.1159_6.853 1511.145_6.854 1601.625_6.853
## 2        4880.624        2717.055        4693.414       3669.107       4794.322
##   1549.6231_6.854 1157.3434_6.852 1145.3428_6.85 1171.8322_6.85 1510.1351_6.854
## 2        3179.157        6450.307       2907.835       9182.755         3332.92
##   1599.6188_6.853 766.5727_6.851 1183.8334_6.853 1509.1326_6.853
## 2        5672.694       17519.13         34739.1        3473.422
##   1600.1221_6.854 1184.336_6.855 1611.6196_6.855 1612.6219_6.855
## 2        7925.387       26521.11         4443.62        3518.422
##   1600.6232_6.854 1580.1025_6.858 1536.6252_6.856 1601.125_6.853
## 2        6881.685        3157.408        3068.867       7206.609
##   1536.1177_6.855 1195.8336_6.857 833.6399_6.878 1157.8451_6.853
## 2        4108.062        68607.18       5561.771         7063.84
##   1573.1314_6.859 1548.6249_6.858 1523.1232_6.86 1537.1276_6.858
## 2        2732.128         4955.48       2464.699        5891.694
##   1589.1303_6.863 826.6051_6.862 1562.1129_6.862 1574.6139_6.862
## 2        19960.34          12937        22721.02        20510.01
##   1581.0989_6.863 1553.1294_6.871 1575.1173_6.863 1587.1165_6.864
## 2        2159.307        5932.734        29707.46        73110.51
##   1586.1131_6.864 1487.1515_6.871 1563.1166_6.865 1575.6183_6.866
## 2        56394.65        11787.87        28489.42        38242.09
##   1592.5935_6.867 1563.6184_6.864 1514.1154_6.867 1576.1212_6.867
## 2        3451.812        17199.99        11699.04        35512.44
##   1548.1292_6.867 1572.126_6.868 1580.5988_6.86 840.6221_6.868 1616.1518_6.868
## 2        6371.311       2966.945       2407.343        19593.6        13179.28
##   1615.1494_6.868 784.5042_6.876 785.0201_6.879 1593.594_6.87 1594.0976_6.869
## 2        24269.12       6912.227       7153.885      3847.872        3865.208
##   1502.1143_6.871 1614.1454_6.868 784.7847_6.875 1564.621_6.871 857.6374_6.871
## 2         4114.43        23931.69       22815.42       15694.01       15725.66
##   784.4182_6.876 784.3687_6.876 783.1226_6.878 783.4174_6.877 1593.0936_6.87
## 2       5728.139       5230.898       5396.507       9845.552        3322.19
##   1515.1185_6.869 913.7001_6.872 1487.1511_6.872 783.1504_6.876 785.5792_6.874
## 2        12058.39       55061.86        11787.87       5308.917       142187.2
##   899.6847_6.873 783.3656_6.875 784.779_6.877 782.9105_6.881 784.6308_6.874
## 2       77207.88       9307.482      22815.42        9752.22          31362
##   783.332_6.875 783.4393_6.874 783.3243_6.874 783.2199_6.876 784.3942_6.875
## 2      7112.816       9775.993       9051.518       6609.113       5407.648
##   1577.1237_6.867 784.4291_6.877 783.1601_6.876 785.0064_6.878 783.1327_6.878
## 2        17270.28       6519.669       5370.077       7101.736       5553.358
##   782.5732_6.875 783.2011_6.878 1488.1552_6.873 783.5024_6.875 783.2594_6.875
## 2        5118052       5738.108        10344.36        16438.4       8841.006
##   783.2926_6.876 783.431_6.876 783.2519_6.875 783.2153_6.875 783.3975_6.877
## 2       8879.737      11415.32       8841.006       6609.113       9822.561
##   783.3843_6.877 784.4472_6.876 794.0606_6.876 783.4057_6.877 785.0389_6.88
## 2       7887.037       7024.986       10706.02       9822.561      7854.313
##   785.049_6.877 783.2313_6.877 784.4911_6.877 786.5814_6.876 782.9653_6.878
## 2      6642.376       7012.737       7622.044        29706.6       6474.723
##   783.067_6.877 784.5306_6.877 783.1442_6.879 783.0991_6.879 784.3802_6.879
## 2      5600.567       7788.103       5385.042        4890.15       5426.719
##   784.3306_6.878 782.9942_6.879 783.3522_6.877 783.1872_6.878 784.3478_6.878
## 2       4889.519       5416.948         7914.3       6745.338       6518.784
##   783.3414_6.876 1562.1131_6.863 784.4086_6.876 782.5279_6.881 784.3757_6.877
## 2       8348.811        22721.02       5975.541       14215.55       5426.719
##   1590.1432_6.882 1549.1336_6.872 784.9793_6.877 1548.1302_6.87 1566.2163_6.888
## 2        22002.96          6424.1       8130.741       6655.745        22692.19
##   1564.1347_6.888 897.7049_6.893 1569.1509_6.94 883.6894_6.894 869.6738_6.894
## 2        850852.2       6647.499       23776.19       17272.91       20351.44
##   1525.1338_6.906 1565.1377_6.892 784.6324_6.878 1592.1507_6.918
## 2        2977.818        861451.7          31362        12488.21
##   1552.1254_6.917 1463.1508_6.915 1172.8405_6.921 1172.3364_6.884
## 2         12711.5        2801.778        10840.85        9370.101
##   1551.1225_6.925 1550.14_6.908 782.0605_6.928 1591.1484_6.916 1551.6195_6.93
## 2        9737.188      4848.113       8147.896        22023.91        11321.2
##   1540.1336_6.931 1542.2142_6.931 1541.137_6.931 1541.2129_6.933
## 2        486983.7        11582.83       465805.6        18545.88
##   1524.1325_6.944 1160.8402_6.939 1539.62_6.944 1160.3363_6.993 890.7034_7.007
## 2          3996.6         12344.9      13607.31        11612.71       24366.79
##   846.6771_7.001 876.6878_7.013 759.4494_6.981 759.2363_6.979 760.4788_6.981
## 2       14237.49       26663.73       13573.45       9096.314       8931.823
##   759.4107_6.98 873.7049_6.978 760.3659_6.98 759.1825_6.981 761.2418_6.982
## 2      12453.77       8745.555      7240.025       8073.894       7632.623
##   761.5791_6.979 758.6931_6.98 760.5104_6.985 759.3448_6.983 758.5734_6.982
## 2       159828.2      151150.5       10110.68       12389.06        5924760
##   759.3553_6.982 759.5018_6.981 759.317_6.981 759.3092_6.981 760.4052_6.983
## 2       11545.61       19481.56      11961.75       11055.11       7653.589
##   759.3828_6.982 760.4925_6.98 759.4259_6.982 759.3339_6.982 1516.1361_6.982
## 2       13261.56      9171.551       12957.39       12457.11         1410985
##   759.2062_6.983 759.391_6.982 758.9593_6.983 759.2797_6.981 760.6287_6.982
## 2       9527.567      13356.74        7871.16       10960.33        37455.3
##   760.421_6.983 759.2558_6.98 760.5281_6.984 761.2551_6.982 1517.1828_6.983
## 2      8018.087      10437.23       8964.443        7059.67         70068.8
##   759.2209_6.98 760.3904_6.983 759.1347_6.985 758.9871_6.983 759.2864_6.986
## 2      8099.955       7451.463       7856.265       7519.873       10960.33
##   759.1729_6.983 759.1221_6.983 759.0903_6.983 759.243_6.983 760.4378_6.981
## 2        8494.09        8485.67       9391.726       9508.17       7236.265
##   859.6895_6.984 761.0316_6.983 759.1094_6.983 760.5329_6.983 759.058_6.985
## 2       23681.34        9723.29        7969.41       9791.593      7774.229
##   758.5284_6.987 759.4041_6.982 760.9991_6.984 760.3462_6.982 760.2985_6.984
## 2       16056.29       13356.74       10946.29        6063.82       5087.155
##   759.2652_6.984 759.0221_6.985 760.7903_6.983 760.2926_6.982 759.1449_6.983
## 2       10437.23       7333.553       25374.46       5774.973       6841.049
##   760.3968_6.983 760.3759_6.985 760.6318_6.982 1518.2168_6.99 748.5833_7.03
## 2       7653.589       7195.236       35895.73       27325.66       1124.02
##   761.0061_6.983 1528.1243_7.002 1148.8422_7.002 1527.6219_7.002 760.5406_6.984
## 2       10946.29        18321.87        18726.27        16791.13       8467.766
##   1475.1518_7.004 845.6738_7.007 1476.1552_7.005 889.7001_7.009 769.5595_7.011
## 2        7617.863       23587.66        8129.001        40159.9       14592.27
##   770.0615_7.009 1564.1269_7.052 718.5934_7.015 717.5903_7.018 875.6845_7.017
## 2       14226.67        9514.498       18629.59       38487.53       49967.14
##   1523.0877_7.024 1478.1161_7.023 1522.0846_7.024 1479.1185_7.024
## 2        11077.44         5792.93        12143.67        4028.012
##   1568.1537_7.025 1567.1512_7.025 1538.1135_7.026 1539.117_7.026
## 2        73506.92        138715.3        38153.05       43548.25
##   1566.1476_7.026 1553.1308_7.035 1159.3314_7.035 764.5222_7.036 720.5532_7.039
## 2        146112.4        8087.822         9756.19       24172.59       14088.04
##   1550.1462_7.021 1552.6273_7.034 1159.8332_7.037 1544.0675_7.037
## 2        3413.481        8553.492        15630.45        4475.843
##   1545.073_7.035 833.637_7.039 1173.8476_7.044 781.62_7.043 1572.101_7.045
## 2       3244.006      7982.129        6445.105     5688.709        2317.23
##   780.5518_7.046 1173.3456_7.052 811.5943_7.054 1184.8408_7.054 809.5892_7.057
## 2       183253.7        5460.866        19779.6        8766.134       291041.8
##   1617.1644_7.055 808.586_7.055 786.504_7.061 1616.1606_7.056 1578.1434_7.057
## 2        11359.09      588403.1      3929.747        11933.23        6161.712
##   792.5893_7.058 858.5992_7.06 939.7152_7.063 848.5388_7.066 1185.344_7.069
## 2        15391.7      2558.981        7418.66       9512.555       6107.932
##   925.6997_7.067 1172.8404_7.074 830.5667_7.072 1197.3456_7.08 1578.1423_7.058
## 2       11909.18        3174.133       70597.19       3549.967        6161.712
##   1593.1638_7.133 1577.1364_7.091 1564.1272_7.069 794.0604_7.102 793.5586_7.102
## 2        20253.26        2604.576        9514.498       7002.137       6752.857
##   1565.1315_7.095 1577.6354_7.106 731.6047_7.112 1545.1554_7.122 1185.8481_7.12
## 2         7596.23         2974.81       5290.383        7436.127       7499.909
##   1186.3509_7.119 1174.8563_7.123 1543.1503_7.123 1542.1466_7.121
## 2        5486.907        3801.644        33650.15        35511.25
##   1566.6417_7.129 1544.153_7.124 1590.143_7.137 1506.089_7.132 1614.1417_7.109
## 2        2229.713       18147.69       14288.61       1726.009        4281.475
##   871.6892_7.141 1592.1596_7.145 1594.1676_7.138 785.5418_7.137 1507.0917_7.135
## 2       8669.539        26156.43        11131.22       2624.599        1453.571
##   1187.8642_7.137 1579.649_7.139 1187.3609_7.137 885.7047_7.143 842.6373_7.146
## 2        3963.236       3174.793        3975.496       5349.646       8487.827
##   1568.1618_7.14 1591.1473_7.14 1580.1526_7.144 834.6001_7.175 784.5879_7.141
## 2       64757.88       15067.01        3506.306          24930        1692172
##   1198.856_7.141 915.7154_7.143 901.6999_7.143 787.5943_7.141 807.5705_7.147
## 2       8771.701       17416.82       30570.23       41582.98       99010.71
##   1569.166_7.14 822.5404_7.148 806.5675_7.192 1574.148_7.172 1575.1514_7.174
## 2       62605.8        10181.6       197554.7       3456.569        2419.836
##   859.6529_7.212 925.6996_7.166 445.3675_7.185 1530.1458_7.188 1531.1493_7.186
## 2       8776.959       8828.329       12413.96        6399.987         4770.68
##   874.5538_7.197 692.5581_7.191 790.5744_7.193 1598.1451_7.197 1554.142_7.183
## 2       12562.07       7282.055       32107.72        1604.776       2480.263
##   831.57_7.208 812.5561_7.198 907.6886_7.2 746.5692_7.204 830.5666_7.214
## 2     28144.86       7984.733     1989.696       95167.72       48927.34
##   768.551_7.206 748.5272_7.208 842.5663_7.213 820.5846_7.213 864.5249_7.21
## 2      16492.49       5183.915       6109.288       24081.39      6938.945
##   827.6266_7.218 1548.0963_7.222 762.5038_7.219 740.5222_7.221 743.6054_7.227
## 2       3752.666        3244.971       13752.56       42976.86       7719.281
##   1546.0812_7.232 1547.0845_7.233 856.5819_7.24 1524.0983_7.244 1525.1027_7.243
## 2        3483.698        3488.121      6638.001        5453.528        4776.934
##   807.5706_7.257 834.6002_7.257 724.5272_7.284 797.5882_7.268 842.638_7.268
## 2       118741.5       39144.84       1910.823       35788.45         10514
##   796.5845_7.27 1542.1462_7.263 1581.1632_7.283 806.5675_7.265 874.5539_7.248
## 2      72564.86        10236.89        12460.12       221178.7       12604.81
##   1566.1444_7.237 859.6529_7.266 822.5405_7.274 807.0682_7.274 1604.1571_7.283
## 2        6496.696       9165.156       13790.86       14134.13        4398.783
##   902.7033_7.285 1198.8563_7.281 1187.8649_7.285 1580.159_7.285 901.6999_7.285
## 2       22156.02        15122.66        8691.572       16503.86       43110.04
##   1590.144_7.285 1579.6508_7.286 1199.3591_7.285 1602.1511_7.303
## 2       25340.23        6353.373        13333.36        3956.888
##   1619.1782_7.285 1187.3625_7.286 1591.1476_7.288 784.5881_7.29 871.6892_7.289
## 2        6223.696        5950.332           27672       2985056       12021.59
##   788.5964_7.29 1569.2427_7.289 1569.1673_7.289 786.6508_7.289 785.452_7.291
## 2      13002.81        7227.282        169802.8       14278.91      3061.687
##   1568.1636_7.29 915.7155_7.29 885.7047_7.291 787.5945_7.291 916.7188_7.29
## 2       183332.1      26279.46       9076.538       69423.93      16018.36
##   784.9268_7.293 1591.6495_7.292 1199.8618_7.293 1602.6436_7.296 1500.102_7.296
## 2       3556.974        7716.316         8550.24        3842.637       8130.538
##   1592.1607_7.297 1501.1056_7.297 1522.0815_7.299 1618.1731_7.3 1603.1486_7.299
## 2        53719.42        6924.185        3485.388      7398.908        6123.091
##   716.5222_7.301 1593.1654_7.298 1210.8558_7.304 1210.3541_7.309
## 2       29371.99        48039.57        6494.122        5208.963
##   1614.1426_7.311 1615.1461_7.313 1616.1569_7.316 1211.3587_7.312
## 2        6480.641        6684.407        6791.084        6283.586
##   808.5857_7.318 795.5728_7.343 1617.1623_7.316 1557.1645_7.322 1556.1613_7.323
## 2       326688.6       13748.49        5146.992        9951.845        12318.78
##   1616.1572_7.316 809.5888_7.318 939.7152_7.328 1601.1673_7.328 1600.1629_7.331
## 2        6791.084       164733.8       4276.156        2296.292        2488.047
##   810.5975_7.409 925.6999_7.337 1577.1677_7.349 816.589_7.342 830.5666_7.346
## 2       71589.98       6891.444        4408.132      9590.603        40156.2
##   1576.1637_7.357 792.5899_7.352 909.7046_7.351 814.5717_7.361 766.5377_7.38
## 2        4759.798       52424.32       3424.445       10382.27      27209.41
##   1550.1483_7.401 1574.1454_7.378 719.6006_7.392 1572.1304_7.394
## 2         4758.88        2446.968       4816.713        1660.778
##   1524.1333_7.404 824.6209_7.408 1551.1527_7.401 1562.1493_7.418
## 2        1292.635       2627.002         5710.29        2471.592
##   1550.1497_7.403 718.5737_7.412 1533.1433_7.416 788.5563_7.415 766.5755_7.417
## 2         4758.88       8682.358        3260.227       57011.77         263405
##   1532.1401_7.417 1562.1488_7.418 1563.1535_7.418 897.7047_7.419 883.6892_7.419
## 2        2746.207        2471.592        2596.255       6101.311       12916.71
##   818.5668_7.42 1554.1324_7.421 796.5848_7.423 1577.1679_7.401 1576.1634_7.391
## 2      22529.65        1357.014         107921        2470.981        3383.889
##   1539.1546_7.459 927.7143_7.45 812.6068_7.457 832.5817_7.451 811.6039_7.456
## 2        2163.313      6838.992       22156.73        31705.1       73096.53
##   810.6006_7.457 764.5195_7.458 742.5377_7.462 1538.1514_7.472 881.5145_7.469
## 2       134224.1       7721.074        22778.2        2572.721       6062.229
##   859.5323_7.471 840.5868_7.472 876.559_7.475 818.6053_7.48 1497.1674_7.486
## 2       5798.906        8956.46      11421.36      37945.43        1581.141
##   807.6359_7.483 750.599_7.485 1583.178_7.489 1582.1737_7.485 1583.1777_7.489
## 2       3831.017      503.6229       2480.384        2310.015        2480.384
##   1508.1468_7.513 794.568_7.494 889.6996_7.495 1541.1852_7.515 772.5855_7.501
## 2        3585.358      38519.91       7052.889        3199.927       226832.2
##   1500.1349_7.508 1509.1474_7.507 753.5881_7.505 1544.1615_7.508
## 2        2126.286        2092.075        85613.7        4649.395
##   1545.1646_7.511 1503.1775_7.514 1504.1822_7.513 822.5994_7.509 731.6073_7.511
## 2        4911.405        6527.674        3927.533       13095.05       454151.3
##   1463.2071_7.511 1462.204_7.513 1515.1602_7.514 1514.1517_7.514
## 2        3124.485       3205.003        4324.024        4498.192
##   1564.1662_7.508 1473.1717_7.517 1474.1752_7.518 859.6891_7.519
## 2        2016.174        4781.798        3421.702       8154.296
##   1507.1493_7.519 1506.1473_7.519 764.5566_7.52 873.7045_7.52 1508.1474_7.516
## 2        6633.252        6062.327      31794.88      4982.985        3585.358
##   1487.1502_7.525 1485.1447_7.523 742.5753_7.523 1518.1461_7.531
## 2        2613.703        2148.859       191131.1         2861.42
##   1484.1411_7.523 1486.1496_7.524 1465.1678_7.525 1466.1708_7.525
## 2        2470.002        1497.945        6654.898        6344.956
##   1477.1393_7.527 1523.1825_7.536 1476.1365_7.528 1553.1686_7.544
## 2        6809.455        2414.234        6057.234        3506.845
##   1526.1519_7.532 1534.154_7.527 1527.1556_7.532 1541.1773_7.535
## 2        4657.574       2007.279        3840.568        3371.827
##   1518.1432_7.534 1468.1317_7.534 1535.1558_7.533 734.5702_7.535
## 2         2861.42        6072.619        2250.025         353520
##   1469.1342_7.535 865.6997_7.537 851.6839_7.537 756.5512_7.537 821.6735_7.538
## 2        5004.616       5414.057       10778.74       54331.42       4345.489
##   1479.137_7.538 1490.1052_7.54 1540.1625_7.542 804.5937_7.544 794.5862_7.544
## 2       2990.767       2127.088        3679.243        3675.05       15818.02
##   1510.1552_7.549 1511.1587_7.551 1482.0893_7.554 1552.1644_7.555
## 2        4226.115        3603.847        2527.381        3953.855
##   835.5327_7.555 1499.1861_7.555 852.559_7.556 792.5899_7.556 1502.1505_7.558
## 2       4495.509        5060.153      7433.632       79604.41        8881.844
##   1503.1576_7.556 1500.1884_7.555 857.5144_7.562 1495.1496_7.564 849.6468_7.572
## 2        8585.501        4000.768       3715.037        2497.357       1906.305
##   1561.1726_7.566 814.5717_7.564 748.5274_7.569 1496.0473_7.572 1537.1733_7.573
## 2        2592.568       13302.22       33318.01        503.6229         6685.33
##   1517.1166_7.575 1516.1139_7.574 1560.169_7.579 1536.1705_7.575 770.509_7.576
## 2        2530.585        2080.433       2282.432        6401.749       9558.02
##   768.5909_7.579 1578.1799_7.626 899.7204_7.586 835.6299_7.591 790.572_7.588
## 2         425446        4914.774       8112.951        3593.34      71291.92
##   885.7047_7.587 1494.1454_7.592 806.5656_7.605 1512.1627_7.554 786.5917_7.604
## 2        18110.2         2098.24       15177.77         2484.35       12606.69
##   1491.1814_7.626 795.6347_7.605 1579.1825_7.633 832.582_7.631 941.7308_7.633
## 2         2028.23       4027.316        5770.362      32799.28       3788.433
##   902.5744_7.633 812.607_7.646 811.6042_7.645 810.6013_7.646 1578.1793_7.636
## 2         4986.1      33542.04       107926.3       204152.2         5323.63
##   850.5541_7.648 1544.1549_7.686 1592.1591_7.656 1181.7509_7.659
## 2       13692.65        23416.95        3815.001        3838.781
##   1187.8641_7.656 818.6355_7.665 1545.1606_7.669 744.5901_7.661 816.587_7.665
## 2        3432.469       8476.735        9823.201       122544.6      23278.81
##   1526.1435_7.632 1528.1659_7.665 1529.1702_7.665 782.5674_7.669
## 2          3219.7        13098.23        9945.977       204366.2
##   1605.1979_7.674 1571.181_7.67 1570.1764_7.672 1570.1773_7.672 911.7203_7.674
## 2        3559.159      25507.28         26085.3         26085.3       8083.822
##   1604.1948_7.675 798.5402_7.677 1163.3585_7.687 1538.1799_7.62 1539.1868_7.674
## 2        4078.128       12759.44         12428.9       3300.314        3109.004
##   1505.1707_7.678 1576.1618_7.678 1504.1669_7.68 878.7033_7.717 925.736_7.685
## 2        20141.23        4844.107       22547.92       25510.83      4708.039
##   1558.1829_7.689 1162.8568_7.691 794.6062_7.691 1558.1819_7.689
## 2        7927.069        16056.36       297145.4        6884.391
##   1588.1988_7.697 1548.6599_7.695 1589.2021_7.7 1543.1477_7.702 1554.1833_7.701
## 2        4674.947        3720.152      5487.492        43559.92        71208.03
##   1571.1809_7.671 1555.1868_7.702 1542.1448_7.703 1546.1714_7.763
## 2        25507.28        70354.03         40527.9        6810.405
##   1543.1481_7.702 1151.8656_7.71 771.5762_7.712 1531.6527_7.711 1151.3639_7.711
## 2        43559.92       17830.46       17433.56        13362.98         11389.1
##   1544.1542_7.691 761.302_7.716 1532.1582_7.713 861.7048_7.713 877.7_7.713
## 2        23416.95      4584.821        12936.25       20699.18    49098.13
##   1542.645_7.698 760.9218_7.716 1510.1192_7.742 762.5251_7.716 761.5191_7.716
## 2       9268.252       6645.419        2446.165       5528.137       10925.86
##   847.6893_7.716 761.3781_7.717 762.6491_7.715 760.9763_7.718 761.4062_7.717
## 2       24082.52       5340.275       22571.04       4674.224       6146.495
##   761.329_7.717 761.0763_7.717 761.4545_7.719 760.5883_7.719 762.5433_7.717
## 2      5142.379        3327.18       6169.562        4489468       5709.717
##   761.4437_7.717 761.1927_7.717 763.5945_7.717 1521.1684_7.718 1520.1651_7.717
## 2       6169.562       4225.203       111291.4        488071.2        529120.6
##   891.7156_7.718 761.3681_7.718 1531.1683_7.726 1535.1253_7.718 1534.1209_7.719
## 2       34318.62       5340.275        6923.904        5424.926          6476.6
##   761.2595_7.716 761.4141_7.718 760.5459_7.719 761.3174_7.717 1583.089_7.72
## 2       4221.082       5045.675       11911.66       4070.718      7703.644
##   1584.0928_7.721 762.5032_7.719 1521.243_7.719 1629.2009_7.725 1628.1971_7.724
## 2        7824.315       5498.319       19060.62        6422.565        6269.854
##   774.5423_7.725 1608.1354_7.743 1568.1599_7.728 1542.1456_7.705
## 2       11221.32        1272.199        5344.125         40527.9
##   1568.6597_7.736 1569.1611_7.737 1569.1618_7.737 1595.1823_7.739
## 2         6495.05        7725.889        7725.889        98361.68
##   1594.1789_7.739 1588.1975_7.7 1188.8722_7.741 1597.1881_7.738 1579.6524_7.748
## 2        107510.6      4674.947        6300.311        22405.04        4470.258
##   1580.1749_7.748 835.655_7.749 834.602_7.751 1669.196_7.752 1668.1927_7.752
## 2         5792.39      11716.94      448794.2       7539.902         7337.15
##   1616.16_7.754 1617.1626_7.754 1199.864_7.757 1518.2006_7.758 1517.1985_7.759
## 2      7962.745        8248.731       6011.038        14714.34        14677.28
##   965.7308_7.761 1540.1703_7.761 1591.2114_7.764 828.6106_7.766 1592.2118_7.764
## 2       4966.207        5146.007        2566.139       6108.895        3137.566
##   818.6356_7.752 819.5737_7.769 951.7153_7.77 1531.181_7.771 1530.1768_7.745
## 2       10548.59       5129.065      8069.892       7283.269        7336.854
##   757.6221_7.776 856.5823_7.778 798.5402_7.73 1484.1047_7.781 1559.1256_7.781
## 2       173236.7       37189.68      12759.44         12958.7        3212.683
##   1558.1201_7.783 1485.108_7.781 1546.1749_7.78 1604.1937_7.739 780.5921_7.79
## 2        3719.182       12755.68       6810.405         2881.03      21050.65
##   1506.0868_7.79 1547.1793_7.789 1507.0899_7.79 1580.1032_7.792 837.614_7.764
## 2        7164.45        6038.432        6378.97        1895.618      20684.03
##   1481.1402_7.792 858.5914_7.792 825.6473_7.81 821.6234_7.811 820.6201_7.811
## 2        1800.823       7071.552      3993.225       12139.44       22466.33
##   902.5743_7.805 724.5277_7.806 1448.0465_7.808 1470.0283_7.811 770.6049_7.812
## 2       5288.838       82317.88        2385.798        1235.015       53227.27
##   825.6476_7.811 802.5717_7.81 746.5091_7.814 811.6292_7.819 770.6048_7.813
## 2       3993.225      3054.885       22823.37       9954.615       53227.27
##   798.6003_7.83 860.6149_7.833 792.5888_7.837 1532.1012_7.882 820.5823_7.852
## 2       34042.7       6221.181       18303.95        2098.229       8507.365
##   783.6368_7.847 805.6187_7.848 745.6202_7.852 818.6049_7.793 806.611_7.876
## 2       31443.32       9091.662        13998.8       8690.408      4951.175
##   876.5695_7.88 878.5742_7.89 756.5904_7.889 748.5844_7.89 772.5245_7.894
## 2      7075.782      5127.966       9227.396      18335.36       9190.083
##   1547.1803_7.856 700.5274_7.902 1486.1173_7.882 826.6326_7.901 820.6202_7.907
## 2        5399.436        21380.6        3084.073       1115.182       24864.75
##   1578.178_7.924 854.6305_7.919 900.5692_7.918 1511.123_7.922 1510.1192_7.922
## 2       2589.248       4165.847       8471.465       4173.432        4908.784
##   1558.1745_7.924 733.6212_7.929 1566.1816_7.932 734.6246_7.927 733.6215_7.929
## 2        3018.691       26322.75        1988.402       13073.23       26322.75
##   1567.1909_7.931 1570.1778_7.936 848.556_7.937 885.6686_7.937 1544.2137_7.94
## 2        2143.826        10944.23      11359.54       7438.577       3019.196
##   832.5829_7.939 1543.2104_7.94 822.5985_7.942 750.5434_7.943 1582.1177_7.942
## 2       190289.3        2826.24       7101.019       42114.63        6270.005
##   1238.3816_7.948 1604.1947_7.949 1592.1862_7.949 1237.8801_7.949
## 2        11928.05        5575.021        3663.058        12679.16
##   811.0052_7.959 1642.1751_7.953 1643.1784_7.953 1605.1986_7.95 1561.1392_7.955
## 2       4200.295        22001.81        26935.08       5968.865        15708.44
##   812.6663_7.96 822.0921_7.956 1227.3893_7.956 1560.1357_7.954 1632.1881_7.956
## 2      20483.73       13487.08        8973.357        17124.43        12940.04
##   1591.1826_7.956 927.7157_7.955 812.5189_7.959 1226.887_7.956 821.5898_7.956
## 2        3305.585       47009.25       3487.065       13389.33       12952.92
##   813.6106_7.959 1225.88_7.956 1226.3841_7.957 941.7313_7.957 1631.6823_7.958
## 2       105242.4      9936.575        11729.91       34206.33        12720.36
##   1622.2784_7.959 897.705_7.958 911.7206_7.958 811.2977_7.959 810.9483_7.96
## 2        8327.534       16258.5       12577.91       2953.238      8446.533
##   810.6041_7.959 1590.1749_7.958 1621.1991_7.959 811.4149_7.961 814.6127_7.96
## 2        3797555        2573.641        291290.3       3379.271      19150.58
##   1620.1954_7.96 811.5374_7.96 811.4537_7.958 1621.2757_7.96 1631.1866_7.959
## 2       288335.2      7926.898       3951.149       14227.17        10745.73
##   811.3445_7.959 812.545_7.958 1604.1946_7.949 1225.3783_7.964 1606.2002_7.968
## 2       2689.355      4522.855        5575.021        8367.904        4865.028
##   1620.6864_7.972 820.5825_7.912 1215.3898_7.986 1580.196_7.986 1581.2003_7.986
## 2        7794.148       7906.429         8153.81       8360.784        8650.421
##   1214.8875_7.988 1536.1354_7.989 1619.1791_7.991 1537.1392_7.989
## 2        9454.278        7501.669        25151.99        7450.519
##   1214.3846_7.993 771.6088_7.993 1618.1753_7.994 770.6056_7.993 1646.2057_7.997
## 2        9955.204       21877.81        19924.52       45203.06        9875.249
##   1608.188_7.997 1597.1987_7.999 1607.6828_7.999 1596.195_7.999 1203.3894_8.009
## 2       9616.779        238179.7        8933.791       237418.1        8534.023
##   1647.2105_8.001 1597.2743_8.003 1213.88_8.002 1607.1867_8.003 811.6598_8.009
## 2        9716.373        10932.16      8690.057        9580.733       15617.21
##   1606.677_8.009 1202.8865_8.011 1556.1974_8.013 1557.2015_8.015
## 2       7183.564        10947.61        7585.335        8709.026
##   1625.2149_8.037 810.6564_8.03 1595.6827_8.019 1547.1806_8.02 1191.3906_8.062
## 2        12292.92      27826.25        14310.02       6703.286        15374.79
##   1546.1772_8.02 918.7347_8.057 788.6651_8.049 1576.2067_8.049 788.4624_8.049
## 2       7400.991       26834.83       28974.59        47163.59       5721.841
##   1202.3827_8.089 787.4429_8.052 787.1747_8.049 901.7361_8.046 788.4791_8.049
## 2        15047.35       8742.474       5992.747       3997.741       6112.382
##   787.1568_8.05 1573.2005_8.05 787.0639_8.049 787.6075_8.051 787.4152_8.05
## 2      7667.641       693332.7       5572.202        2972382      7381.672
##   787.4054_8.05 789.0553_8.052 788.4066_8.049 787.4705_8.05 887.7206_8.05
## 2      10284.95       7108.641       5121.138      9619.832       17676.8
##   789.6103_8.05 787.2199_8.049 788.5214_8.05 788.6624_8.05 787.246_8.049
## 2      137969.9       7135.861        7705.8      28974.59      5294.002
##   788.3967_8.051 786.6043_8.051 787.2651_8.051 787.4549_8.049 788.3339_8.051
## 2       4785.516        5057976       7128.331       7922.134       4397.506
##   787.2508_8.05 1623.2097_7.994 787.2891_8.052 788.4473_8.05 789.0076_8.052
## 2      7128.331        67560.01         9301.7       5244.83       7598.059
##   1574.2787_8.051 787.3251_8.05 790.6125_8.05 787.3567_8.05 787.1311_8.049
## 2        19970.31      8355.461      24993.36      8801.472       4919.229
##   788.3678_8.051 787.0988_8.052 787.394_8.051 788.5317_8.052 788.5585_8.05
## 2       4608.768       4709.151      6810.915         7705.8      8609.776
##   1572.1972_8.051 788.4344_8.049 1624.213_8.033 787.2834_8.051 787.1808_8.051
## 2        713128.7       5311.012       31627.44        6348.56       5992.747
##   787.2998_8.051 787.0264_8.052 787.5336_8.052 787.3787_8.051 873.705_8.052
## 2         9301.7       5334.682       16162.11       8637.388      21801.81
##   787.4344_8.052 786.998_8.053 789.039_8.054 786.5592_8.053 836.6167_8.053
## 2       8742.474      5534.201      8507.692       13340.05       164887.3
##   837.6197_8.054 788.2955_8.051 917.7314_8.057 1574.2746_8.051 1625.2172_8.052
## 2       92194.16       4771.157       41920.64        19970.31        12292.92
##   788.4171_8.052 787.5853_8.055 1577.208_8.052 1583.684_8.06 1190.8891_8.06
## 2       5784.904       11014.68       12456.68      18803.38       19758.05
##   1584.1871_8.061 1504.14_8.066 809.6525_8.065 1542.1805_8.073 798.0928_8.066
## 2        21277.47      6772.122       35540.13        1776.127       17759.56
##   1580.1886_8.021 903.7157_8.069 797.5914_8.07 1512.1341_8.076 1513.1387_8.078
## 2         7128.25       54982.04      20372.87        4902.032        4631.781
##   1594.1759_8.08 1596.1936_8.011 1595.1798_8.081 1015.8403_8.077
## 2       37922.51        237418.1        43863.75        4834.177
##   1534.1768_8.083 1578.1482_8.087 1579.1512_8.088 1531.2124_8.09
## 2        2277.115        8681.579        7062.498       2929.316
##   1538.1459_8.043 1560.1917_8.095 1561.1945_8.097 1201.8801_8.097
## 2        4576.042        6615.864         6840.08        19030.65
##   748.5844_8.099 1601.1358_8.098 792.5534_8.102 838.6248_8.065 858.5976_8.109
## 2       7808.411         2936.89       20987.08       27926.53           9422
##   1505.1673_8.109 844.6529_8.109 1568.1908_8.106 1504.1651_8.11 824.5559_8.11
## 2        4884.837       9276.462        2051.227       6692.307      11680.59
##   861.6684_8.111 808.5829_8.112 745.6214_8.115 814.5355_8.122 876.5697_8.13
## 2       8620.017       225450.7       33230.93       4392.017      14577.01
##   797.6166_8.131 812.615_8.136 782.6048_8.136 797.622_8.139 813.6188_8.138
## 2       13172.68      55408.08       13588.56      13172.68       30250.12
##   718.5742_8.138 796.6199_8.138 740.5559_8.156 804.5876_8.154 803.6626_8.177
## 2       35830.49       27612.89       7921.292       3303.463       3644.082
##   738.543_8.181 831.6353_8.196 794.6054_8.214 816.5873_8.216 772.5244_8.234
## 2      3907.031       7501.353       17375.99       5054.953       6606.474
##   748.5258_8.233 750.5444_8.236 726.5431_8.239 726.5428_8.237 796.5824_8.278
## 2       5351.612       14193.02       10719.58       10719.58       15188.23
##   742.5718_8.28 774.6005_8.288 720.5897_8.289 840.5869_8.291 818.6044_8.299
## 2      10703.92       62710.81       45988.07       2605.901       11294.86
##   812.518_8.311 1559.0847_8.317 790.5354_8.318 1536.1002_8.319 869.6735_8.319
## 2      11549.13        3963.939       45920.63        5456.714       8030.849
##   855.6577_8.319 1558.0818_8.319 768.554_8.322 766.5713_8.323 1537.103_8.32
## 2       10435.99        4421.086      137888.4       9783.301      6037.892
##   861.7043_8.325 1512.129_8.321 744.5895_8.327 859.53_8.35 1603.1463_8.354
## 2       3211.882       1559.188       44567.25     5301.65        4844.428
##   1602.1428_8.354 1581.1647_8.356 771.6366_8.357 577.5185_8.358 1580.16_8.36
## 2        4260.903        6483.572       19273.06       9046.008     6051.538
##   837.5477_8.363 854.574_8.362 844.6193_8.384 1556.1852_8.372 796.621_8.383
## 2       6388.882       5900.62       2343.371        2861.209      42591.81
##   1598.2072_8.389 1599.2108_8.39 797.6421_8.39 1609.235_8.392 870.6724_8.39
## 2         2189.45       2292.629      22040.94       2434.688      8020.474
##   798.6518_8.391 768.5859_8.446 1608.2268_8.392 834.5987_8.394 913.7362_8.395
## 2       9237.925       16053.65        2900.167       153612.4       7233.695
##   850.5715_8.394 1240.9027_8.395 1647.2081_8.395 1636.2128_8.395
## 2       7632.641        5042.266        5742.002        1433.161
##   1646.2051_8.395 1241.4043_8.395 870.6699_8.393 823.6064_8.398 943.7468_8.396
## 2        4859.879        3468.615       8020.474       7488.811       16223.18
##   1625.2283_8.396 899.7208_8.396 812.6186_8.396 902.5848_8.397 1624.2248_8.397
## 2        28604.91       6616.074        1047428       11303.64         23280.4
##   829.6782_8.401 1229.9108_8.397 929.7313_8.398 887.6842_8.398 928.5901_8.4
## 2       2905.943        1786.848       30229.99       9576.363     3768.261
##   1488.1014_8.407 1579.148_8.401 1556.1645_8.4 812.5816_8.403 1578.1446_8.401
## 2        1599.076       6521.392      8926.728       4463.521        5768.261
##   744.5536_8.408 1558.2047_8.408 831.6573_8.408 836.6141_8.438 766.5356_8.411
## 2       67014.39        5426.738        6645.16          67513       17174.81
##   1559.2145_8.411 1648.2179_8.411 835.6663_8.407 1649.2233_8.415 797.6453_8.401
## 2        4953.904        4564.862       3489.756        4294.236       18578.69
##   800.616_8.426 812.5434_8.427 746.6055_8.435 836.6148_8.439 862.6306_8.44
## 2      7890.593          26353       87903.04          67513      4183.623
##   834.5249_8.443 863.7199_8.448 953.7312_8.446 768.587_8.451 858.5977_8.453
## 2       8687.038       4957.399        2759.53      16053.65       14241.17
##   838.626_8.451 820.6211_8.471 842.6021_8.473 827.663_8.483 872.6526_8.477
## 2      12044.27       19120.01       5486.396      2012.232       2843.092
##   732.589_8.53 822.6349_8.528 816.5872_8.538 911.7203_8.543 1681.1596_8.548
## 2      2401.35       13368.51       13415.11       2542.075        1467.894
##   794.6057_8.544 846.6354_8.545 824.616_8.544 627.5345_8.545 904.5911_8.546
## 2        55114.2       4117.595      8617.461          51406       123015.3
##   887.564_8.547 974.6686_8.55 909.5461_8.55 988.6841_8.551 931.5277_8.561
## 2      59375.29       16389.7      76121.21       12244.31       18477.89
##   628.54_8.549 682.5516_8.574 682.5424_8.581 797.6383_8.603 774.5401_8.626
## 2     26479.12       3619.219       2558.001       5545.024       4538.035
##   800.6163_8.637 772.6196_8.643 762.6465_8.683 770.6056_8.664 887.7201_8.662
## 2       17393.14       18083.74       11254.51       34141.53       3043.479
##   879.715_8.665 762.6007_8.665 762.6003_8.665 792.5873_8.665 784.5827_8.668
## 2      3347.962       69766.69       69766.69       7310.066       14434.09
##   783.6251_8.708 760.6411_8.71 761.6436_8.707 603.5342_8.674 885.5458_8.676
## 2       12006.47      178180.8        47402.3       12115.92       12543.16
##   880.5906_8.676 881.5938_8.68 863.5639_8.681 863.6636_8.706 798.5401_8.707
## 2       17983.94      8863.724       10738.46       3641.466       12199.61
##   776.5588_8.709 864.7169_8.689 782.6223_8.717 759.6382_8.714 781.6192_8.718
## 2       31320.01       1566.179       37748.96       377947.8       79606.58
##   913.7359_8.729 818.603_8.731 796.6218_8.731 1592.2329_8.736 1556.2518_8.736
## 2       10978.33      33741.27       184381.4        1825.225        2584.336
##   927.7519_8.733 1555.2487_8.735 1581.2641_8.744 1518.2654_8.731 1544.281_8.743
## 2       4942.718        2985.768        1573.402        2188.292       1780.539
##   812.6149_8.745 787.6592_8.744 785.6536_8.747 786.6565_8.746 807.6347_8.75
## 2       29369.25       24286.89       155052.9        84624.2      34807.37
##   808.6375_8.751 792.551_8.764 770.569_8.759 1096.0441_8.765 1585.2312_8.763
## 2        19958.4      3824.715      10167.52        4770.117         2009.13
##   1547.245_8.769 813.6183_8.757 1584.2261_8.767 872.652_8.777 838.6321_8.779
## 2       1813.769       15552.54        1495.615      3547.788        71823.5
##   955.7465_8.781 860.6133_8.785 802.5738_8.798 812.6135_8.749 844.6182_8.806
## 2       4056.542       19085.75       2034.857       29369.25       9798.069
##   822.6365_8.807 1626.2381_8.815 772.6209_8.839 772.6206_8.839 1560.2277_8.857
## 2       37384.18        1795.634       36643.13       36643.13        2528.111
##   895.575_8.852 1610.2416_8.847 1561.2317_8.857 868.5564_8.853 1560.2279_8.857
## 2      9122.681        1606.627        2096.769       8738.109        2528.111
##   970.718_8.858 878.5852_8.857 1205.4054_8.863 1193.9116_8.867 1204.9038_8.864
## 2      2072.045       15522.63        3425.485        2413.895        6387.432
##   889.7358_8.865 799.6069_8.865 810.5988_8.865 1204.4035_8.865 846.6352_8.854
## 2       6697.935       6983.009       162977.6        4851.083       3632.331
##   826.5716_8.868 1599.2099_8.871 788.6177_8.867 875.7207_8.87 919.7465_8.87
## 2       8242.287         6221.98       865810.6      7441.585       15927.8
##   1600.2146_8.869 905.7311_8.871 1598.2061_8.871 1576.2251_8.873
## 2         4016.72       29489.88        5958.527        23088.73
##   1577.2283_8.872 863.6838_8.874 846.6653_8.88 846.6641_8.878 920.75_8.87
## 2        23334.67       7788.028      6441.184       6441.184    8393.018
##   862.6249_8.847 798.635_8.894 1562.15_8.919 1541.1702_8.921 1540.1672_8.92
## 2       2585.278      6228.352      2620.241        3824.149       4577.397
##   1574.2638_8.923 1573.2611_8.925 1599.2772_8.928 1600.2791_8.929
## 2        6542.399        6040.388        5463.161        5027.115
##   752.5592_8.969 1540.1695_8.922 634.54_8.941 1424.1384_8.941 835.6566_8.968
## 2       121846.2        4577.397     11649.02        1106.273       16823.72
##   807.6349_8.948 1570.2972_8.954 1571.3005_8.952 785.6542_8.953 1618.2939_8.956
## 2       100125.8        4251.078        3762.899       522479.3         2913.59
##   1619.2973_8.957 1597.3162_8.956 1226.4736_8.96 1596.3127_8.957 902.7673_8.957
## 2        2636.041        6456.792        2384.73        7183.553       4785.488
##   864.6463_8.959 1622.3273_8.96 1623.3314_8.96 1538.2067_8.962 811.6703_8.961
## 2       3853.001       3328.855       2920.397        8198.008       452180.2
##   1537.2035_8.961 942.7986_8.961 928.7831_8.964 1563.2185_8.966 1564.2222_8.965
## 2        8158.631       3112.762       4864.024        6779.179        7188.461
##   1559.1849_8.966 820.6364_8.966 1560.1891_8.966 1505.1127_8.971 752.5594_8.973
## 2        4831.348       5543.612        4781.248        3282.363       121846.2
##   833.6507_8.971 1504.1092_8.971 1585.2008_8.971 1586.2043_8.972 839.6622_8.973
## 2       90670.38        3353.871        3973.039        4660.113        11185.8
##   1526.0908_8.976 1527.094_8.977 853.6786_8.975 853.6786_8.974 774.5404_8.982
## 2        2261.368       2447.814        6491.64       6065.305          33071
##   901.6373_8.994 796.5222_9.007 773.6516_9.025 848.6521_9.028 870.6336_9.039
## 2       5242.931       6539.751        5768.31       10455.57       3922.008
##   778.5756_9.056 800.5558_9.058 639.4955_9.064 634.5399_9.061 814.6319_9.087
## 2        21589.4       9973.236       9008.702       17308.44       45744.32
##   728.5588_9.081 772.5221_9.085 815.6606_9.084 814.6318_9.087 836.6136_9.086
## 2       36172.36       4829.609       6896.445       43821.04       12368.03
##   815.6352_9.088 976.684_9.115 889.5795_9.114 889.5796_9.114 906.6063_9.114
## 2       23855.86      3964.211       10294.85       10294.85       19006.69
##   911.5614_9.119 907.6093_9.114 761.6526_9.142 860.6131_9.152 838.6301_9.147
## 2       15033.86       9790.684       13240.48       3334.685       10393.55
##   761.6524_9.144 783.6349_9.156 824.6527_9.167 798.6374_9.202 787.6674_9.202
## 2        14064.4       4326.388       3069.503       10325.25       11397.39
##   837.6831_9.217 746.5685_9.239 836.6135_9.214 1134.7862_9.281 805.6784_9.291
## 2        2259.97       23541.21       5999.759        2264.969       3160.882
##   831.694_9.318 799.6686_9.32 821.6501_9.321 853.6758_9.321 825.6815_9.335
## 2      9682.384      64151.51       19314.07       4403.143        4570.61
##   795.6345_9.346 773.6531_9.348 796.6374_9.346 829.6788_9.393 790.5588_9.389
## 2       31471.45       106267.2       15768.11       2430.643       29043.04
##   812.5409_9.393 835.6652_9.434 813.6834_9.437 911.5609_9.505 748.6211_9.504
## 2       14324.15       2862.271        5873.96        3171.01       8226.154
##   906.6086_9.509 830.6471_9.551 825.6817_9.564 825.682_9.561 825.6778_9.575
## 2       4015.066       2937.108       5497.752      5497.752       5497.752
##   799.6692_9.585 821.6503_9.585 889.6375_9.586 824.6537_9.596 865.5795_9.626
## 2       126674.4       40410.24       5655.457       8026.033        9856.34
##   882.6062_9.627 605.5497_9.629 887.5614_9.632 610.5401_9.655 874.6674_9.727
## 2       11044.41       12343.13       13329.28       28221.02       3739.477
##   946.718_9.767 822.6412_9.776 994.7158_9.773 972.7339_9.773 610.5401_9.784
## 2      4369.626       3652.028       3394.066       6745.506       26610.01
##   575.5027_9.782 775.6661_9.814 848.6521_9.817 802.5715_9.823 780.578_9.823
## 2       7375.394       3828.128       6023.061        7545.51      20116.21
##   837.6724_9.906 636.5558_9.845 877.6374_9.86 1454.1868_9.88 1428.1716_9.868
## 2       21972.99       42947.85      7760.845       2822.004        3884.678
##   790.6308_9.873 836.6696_9.91 809.6507_9.876 825.6241_9.886 1229.9993_9.9
## 2       10953.72      68698.66       142217.1       5103.176      5663.727
##   1216.4896_9.892 1596.3093_9.895 822.6567_9.894 904.7835_9.894 787.6701_9.896
## 2        6419.074        2667.233       9440.671       7669.869       764947.4
##   918.7987_9.897 1575.3325_9.895 1597.3131_9.894 1216.9911_9.896
## 2       3990.714        9844.885        4571.203        6257.887
##   1574.3292_9.897 1610.32_9.892 1218.0011_9.9 1205.4975_9.898 1601.3486_9.899
## 2        9586.805      2037.454      2942.346          2605.5        15603.96
##   1624.8418_9.901 1612.335_9.9 1600.3452_9.899 1622.3263_9.899 1204.9948_9.897
## 2        1690.118     3212.694        17856.85        6902.972        2218.285
##   1623.3297_9.9 1626.36_9.901 1229.4977_9.901 823.1597_9.895 1636.3352_9.901
## 2       6103.94      7419.634        5963.986       9982.173        1853.384
##   1218.5051_9.902 813.6866_9.902 1611.8348_9.901 851.64_9.902 1648.3413_9.902
## 2        2684.094       690934.4        1809.095      6419.02        2774.843
##   944.8145_9.903 1635.8345_9.901 930.7989_9.903 1627.364_9.902 1231.5117_9.905
## 2       4155.017        2170.793       6697.064       7962.128         1438.79
##   1649.3448_9.904 1242.5053_9.906 835.6666_9.91 1637.3363_9.913 1624.3343_9.899
## 2        2797.678        2477.214      129321.4        1596.268         4526.23
##   903.6531_9.918 1454.1867_9.904 1455.1905_9.914 811.657_9.886 900.6836_9.96
## 2        7390.53        2822.004        2837.323      22864.78      3004.962
##   824.6526_9.963 816.6467_9.969 846.6342_9.978 850.668_9.982 1260.0333_9.997
## 2       22027.61       9653.991       6442.004      21643.29        1689.841
##   636.5558_9.995 877.6374_9.988 872.6492_9.995 641.5114_9.997 874.6655_10.042
## 2       56788.64       7760.845       6610.988       25429.38        4552.474
##   1285.8106_10.085 1237.8134_10.084 1259.7951_10.087 1263.8289_10.086
## 2          3408.22         6988.395         5009.238          4262.39
##   848.6549_10.11 839.6989_10.178 802.5716_10.204 893.6243_10.204
## 2       3186.075        6096.698        5188.358        5797.206
##   903.6531_10.207 780.5795_10.219 835.6664_10.22 1242.5051_10.22
## 2        8449.854        22486.07       103869.8         2082.82
##   813.6854_10.226 1649.3444_10.225 1626.3599_10.225 1627.3632_10.227
## 2        381365.5         2159.219         3409.696         2932.786
##   930.7988_10.228 993.7984_10.238 876.6835_10.245 850.6799_10.276
## 2        3466.205        1542.351        22272.34        10435.37
##   827.6998_10.277 849.6809_10.279 790.6874_10.339 837.6789_10.324
## 2        60154.34        14998.08        22034.11        9877.133
##   789.6837_10.343 817.7051_10.344 1263.8289_10.349 789.6834_10.343
## 2        40494.28        6994.667         5731.129        40494.28
##   1136.8021_10.373 784.6654_10.38 810.6812_10.387 827.6999_10.389
## 2         3619.193       49122.83        25851.02        26534.71
##   1392.1715_10.401 823.6664_10.409 918.7994_10.407 1624.3414_10.412
## 2           3190.6        62043.82        4696.219         2813.871
##   801.686_10.409 1602.3605_10.41 1603.364_10.411 612.5558_10.456 577.5187_10.46
## 2       692194.6        11764.94        12013.23        77427.25       32375.08
##   1251.8293_10.466 576.5712_10.467 1273.811_10.468 638.5716_10.5
## 2         8640.006        5095.905        3408.723      165529.4
##   827.6999_10.502 828.702_10.497 603.5343_10.505 1061.8543_10.506 974.75_10.504
## 2        25615.83       15173.97        34431.88         3343.002       11808.7
##   1281.8397_10.519 620.5974_10.522 602.5849_10.522 646.6126_10.526
## 2         6460.258        18829.71        5623.001        11654.99
##   798.681_10.534 876.6836_10.537 837.6818_10.567 1631.3955_10.568
## 2        32928.6        16258.83        39000.64         28180.23
##   1630.3921_10.568 815.7025_10.568 932.8152_10.571 1693.3899_10.581
## 2         28998.01         1358551        14281.75          3901.89
##   1694.3938_10.581 1265.8449_10.582 1266.8482_10.583 878.6996_10.587
## 2         3288.189         12453.42         8237.125        66347.16
##   852.6843_10.599 812.6971_10.626 634.6121_10.629 794.6868_10.627
## 2        28785.61        79744.41         13066.2        8050.009
##   829.7155_10.657 604.6026_10.678 622.6132_10.675 648.6287_10.678
## 2        93435.59        24810.28        92957.06         65970.8
##   630.6177_10.682 750.7353_10.695 766.6703_10.657 636.6288_10.754
## 2        16101.65        13713.27        2498.589        61143.04
##   618.6182_10.756 1298.1983_10.827 1297.1947_10.828 1301.284_10.831
## 2        18534.63         14894.16         15831.92        9458.521
##   650.6449_10.83 632.6339_10.83 1300.2808_10.831 1323.2657_10.832
## 2         231980       61316.71          10455.6         7166.766
##   1322.2624_10.832 737.7496_10.83 751.765_10.833 652.6596_10.839
## 2         7450.369       99716.04       43819.77        29194.06
##   698.6194_10.879 369.3508_10.879 822.6568_10.855 706.612_10.9 367.3357_10.902
## 2         7585.75        7600.824        1118.715     503.6229        2734.666
##   1312.1372_10.911 536.437_10.971 537.4409_10.971 794.7051_10.958
## 2         1260.354       15194.12        6173.038        1532.064
##   764.6932_10.985 750.6771_10.977 723.7681_10.986 990.7559_11.04
## 2         3286.64        4052.782        6541.254       503.6229
##   916.7378_11.078 986.8154_11.075 966.7541_11.082 790.6914_11.103
## 2        4055.856        2141.574        1308.728         14667.1
##   871.6776_11.111 866.723_11.11 897.6938_11.125 1012.8318_11.122
## 2         1971.72      11646.06        2771.518         2667.541
##   942.7538_11.123 816.7069_11.125 886.7839_11.127 992.7701_11.13
## 2        7002.996        24550.12        8966.745       1220.198
##   892.7383_11.126 947.7089_11.125 1026.8485_11.128 893.7418_11.129
## 2         13834.8        1734.781         1478.241        9333.282
##   847.6774_11.153 842.723_11.155 912.7986_11.157 1077.8922_11.168
## 2        4512.683       35983.47        12624.66         3036.969
##   1052.864_11.17 923.7092_11.174 988.8322_11.176 918.754_11.178 873.694_11.187
## 2       1462.379        4076.415        5921.241       24098.13       7523.448
##   873.6937_11.187 1038.8471_11.18 868.7389_11.19 938.8159_11.193 537.4408_11.2
## 2        7523.448        1416.362       59879.36        20733.04      10269.49
##   536.437_11.201 973.7251_11.18 899.7091_11.203 964.8324_11.205 978.8481_11.206
## 2       22663.33       1255.917        9732.242         18701.9        8140.438
##   894.7548_11.21 895.7581_11.209 949.7248_11.221 792.7074_11.221
## 2       68870.35        46552.75        3564.008           53668
##   1028.8632_11.223 1014.8477_11.222 944.7698_11.221 994.7855_11.222
## 2         2733.207          5224.73        21662.38        1416.049
##   965.8354_11.205 1064.8634_11.211 823.6785_11.238 818.7234_11.241
## 2        14816.66         1068.808        12250.72        122100.3
##   888.8006_11.24 979.8509_11.21 880.718_11.248 1651.3848_11.251 966.8463_11.305
## 2       42924.87       7065.987        25625.6          1242.25        78760.45
##   1676.3968_11.262 1677.4008_11.264 849.6939_11.262 958.844_11.264
## 2         1796.038          1726.64        20410.24       4713.466
##   972.8574_11.264 844.7397_11.265 914.817_11.265 928.8321_11.265 984.86_11.28
## 2         2451.91        204800.8       66042.93        29528.29     4351.066
##   970.786_11.284 875.7095_11.292 870.7558_11.296 940.8331_11.297
## 2       7937.148        30375.43        324633.8        108197.9
##   925.7249_11.296 954.8481_11.299 996.8_11.288 990.8484_11.304 920.7705_11.302
## 2        10130.74        44881.93     1424.071        21417.84        85782.57
##   967.8518_11.315 1004.8642_11.302 896.7714_11.316 980.8638_11.316
## 2        52803.07         8446.431        248298.5         32281.8
##   980.8635_11.316 966.8486_11.316 896.7712_11.316 901.7251_11.318
## 2         32281.8        78760.45        248298.5        24962.91
##   832.7384_11.319 1030.8788_11.336 1016.8631_11.335 946.7855_11.335
## 2        20185.07         5249.511         12976.75        45298.57
##   951.7402_11.339 863.7092_11.343 858.7545_11.345 972.8_11.345 1678.4082_11.291
## 2        5979.087        4331.861        38934.54     6095.989         1496.688
##   897.7743_11.318 794.7232_11.353 864.8008_11.354 1603.3857_11.359
## 2        159883.8        83499.66        35786.23          1324.06
##   1602.3814_11.358 884.7697_11.358 1629.4012_11.367 1628.3971_11.365
## 2         1567.764         22661.8         2671.462         3046.245
##   820.7395_11.368 942.849_11.418 927.7399_11.374 1654.4129_11.376
## 2        301490.2       478812.6        12192.02         4399.808
##   1655.4167_11.377 934.7878_11.376 992.8634_11.384 851.7097_11.384
## 2         4814.808        3561.133        46830.57        37883.41
##   968.863_11.436 1006.8788_11.385 1680.4284_11.386 922.7862_11.386
## 2       199250.5         19874.99         8051.829        174604.8
##   1681.4323_11.387 846.7559_11.39 930.848_11.39 916.8333_11.39 872.7731_11.418
## 2          7821.17       682281.1      114990.1       257165.2         1616522
##   877.7253_11.418 956.8644_11.419 942.8496_11.419 872.7324_11.418 924.8_11.503
## 2        60751.11        203498.6        478812.6        9127.002     217531.5
##   898.7872_11.44 982.8793_11.44 968.8643_11.442 971.877_11.497 903.7406_11.457
## 2       669157.7       92480.07        199250.5       17941.21        37241.99
##   834.7543_11.459 1018.8786_11.465 948.8005_11.465 1032.894_11.465
## 2        47546.99          10522.3        41912.89        4827.447
##   953.7558_11.474 974.8146_11.474 860.7704_11.477 865.7253_11.477
## 2        3773.431        6077.163        140002.2        11221.68
##   936.8015_11.483 891.7406_11.489 886.7858_11.492 929.7558_11.499
## 2        4311.123        8177.318        89998.27        14997.75
##   994.8787_11.507 1020.8931_11.508 1008.8943_11.508 1034.9093_11.511
## 2        61630.42         7597.849         25257.67          3466.29
##   1633.4321_11.51 924.8016_11.511 950.8156_11.512 1628.4765_11.515
## 2        2025.455          228336        27785.38         1713.184
##   1658.4443_11.517 892.8326_11.516 1659.4478_11.517 822.755_11.516
## 2         6331.303        145534.3         5374.612       287093.4
##   1653.489_11.522 1654.4923_11.523 1684.4596_11.522 1685.4637_11.522
## 2        3217.005         3502.013         7813.414         11191.29
##   951.819_11.515 848.7717_11.527 1679.5046_11.53 1680.5083_11.531
## 2       20169.02        967240.2        6822.774         7704.743
##   876.6825_11.558 877.7965_11.559 944.8656_11.558 958.8804_11.56
## 2        3346.467        122302.7          890314       398300.2
##   874.7892_11.559 874.7461_11.559 875.5569_11.56 876.854_11.56 820.6961_11.574
## 2         3172820        15439.89       2351.354       21837.2        4369.521
##   879.7408_11.578 912.8727_11.58 688.6024_11.581 900.803_11.585 970.8801_11.587
## 2        48040.11       6471.074        21189.06        1112878        325268.1
##   984.8952_11.587 905.7564_11.605 950.8167_11.564 1020.8946_11.578
## 2        149427.6        44519.53        27785.38         7168.371
##   976.8319_11.618 927.8194_11.647 862.7859_11.623 1034.911_11.594
## 2        3982.127        77872.82        222026.7        2552.789
##   955.7715_11.624 996.8931_11.636 1010.9091_11.638 888.8014_11.642
## 2        1778.225         34972.3         17250.75        190564.5
##   1416.1569_11.643 714.6184_11.643 1417.1607_11.643 893.7563_11.645
## 2          1047.74        102431.2         1195.386        23155.99
##   931.7715_11.646 926.8159_11.647 719.5732_11.65 1022.9086_11.654
## 2         15659.2        114237.9       6053.102         8046.453
##   1036.925_11.654 1366.1408_11.655 957.7865_11.655 1367.1442_11.655
## 2         4327.82         2090.963        4914.232          1783.41
##   952.831_11.66 978.8456_11.66 1316.1245_11.664 1317.1277_11.664
## 2      27333.94       2786.061         2743.785         3071.889
##   664.6011_11.668 1311.1692_11.669 1312.1724_11.668 928.8306_11.753
## 2        34742.44          3528.94         2835.189        67667.66
##   1689.4913_11.681 1688.4878_11.681 1657.5142_11.686 1683.5318_11.692
## 2          5808.51          4370.88         503.6229         5529.812
##   1684.5352_11.693 960.8944_11.707 946.8797_11.708 876.8035_11.712
## 2         6383.304        428250.2        899821.8         3226126
##   879.8107_11.711 902.8168_11.73 876.7617_11.713 878.587_11.712 972.8948_11.737
## 2        120675.1       895668.6        17487.13       2670.459        269066.1
##   902.8182_11.738 986.9104_11.739 1554.3397_11.745 1555.3432_11.744
## 2         1224359        127751.5         4530.259         3650.815
##   1041.9353_11.754 1363.2025_11.753 1364.2059_11.753 690.6188_11.754
## 2         2514.979         24606.14         25608.94        252108.4
##   673.5905_11.756 1369.1611_11.766 1368.1577_11.767 907.7722_11.767
## 2        8385.006         16062.58         14618.86        60527.93
##   928.8317_11.769 695.5729_11.772 1012.925_11.773 998.9084_11.775
## 2        67667.66        14446.94        9726.109        22197.71
##   933.7875_11.787 1339.2017_11.786 1344.1575_11.789 1345.161_11.79
## 2        11010.68         3396.515         8898.468       7879.225
##   895.7721_11.798 890.8172_11.801 1268.1254_11.807 1295.1453_11.81
## 2        39354.18        222009.8         4658.194        10834.82
##   1294.1419_11.81 1263.1707_11.815 991.9207_11.815 1289.1866_11.82
## 2         11917.9         3417.174        4366.934        12816.24
##   1290.1901_11.819 1320.1579_11.832 1321.1613_11.836 369.3517_11.844
## 2         14974.65         39232.81          39623.7        182142.1
##   1322.1646_11.831 666.619_11.852 370.3549_11.851 1298.1748_11.858
## 2         24688.49       524568.4        54212.87         6319.687
##   1299.1785_11.856 1017.9359_11.856 1318.2126_11.857 1316.2069_11.859
## 2         6578.469         25785.38         28259.07         165839.2
##   1315.2035_11.858 1341.2177_11.895 1342.2211_11.896 692.6335_11.899
## 2           159782         7678.696         8293.413        46673.77
##   693.6368_11.899 1532.3557_11.908 1346.1728_11.908 1347.1765_11.909
## 2        23759.46         3606.448         6072.426          6827.92
##   904.8336_11.91 1558.3711_11.912 988.9264_11.914 974.911_11.915
## 2       709680.4         4606.458        99856.62       219563.4
##   930.8479_11.919 1000.9255_11.924 1014.9413_11.924 1334.1724_11.947
## 2        77632.02         26061.62         12150.83         1344.198
##   956.8628_11.946 1308.157_11.948 1322.172_12.024 1350.2033_12.028
## 2        8415.506        1872.269         4146.23         2119.103
##   1324.1888_12.056 1325.1924_12.055 1299.1762_12.078 370.3549_12.075
## 2         27354.78         28560.82         15242.02        53898.55
##   1019.9516_12.075 1319.2346_12.075 1303.2104_12.075 1302.2067_12.075
## 2         54721.55         125490.6         15517.75         16427.43
##   1320.238_12.076 668.6342_12.074 1277.1948_12.078 369.3518_12.077
## 2        123558.4        166722.6         12821.56        186192.3
##   1294.2217_12.077 1268.2053_12.079 1293.2183_12.078 1326.1956_12.056
## 2         50350.77         4661.689         53581.95         15722.65
##   1267.2019_12.079 1276.1913_12.079 1250.1754_12.08 642.6107_12.077
## 2         5505.106          13411.3        4338.924        13245.47
##   1298.1727_12.089 1272.1559_12.098 1028.9572_12.137 963.8345_12.135
## 2         15940.22         2504.315         7405.451        6037.557
##   984.8939_12.149 1329.2228_12.335 1328.2189_12.336
## 2         4043.26         2327.458         2329.194

Find connections

connection <- find_connections(data = data_notame,
                               features = features,
                               corr_thresh = 0.95,
                               rt_window = 1/60,
                               name_col = "mz_rt",
                               mz_col = "mz",
                               rt_col = "rt")
## [1] 100
## [1] 200
## [1] 300
## [1] 400
## [1] 500
## [1] 600
## [1] 700
## [1] 800
## [1] 900
## [1] 1000
## [1] 1100
## [1] 1200
## [1] 1300
## [1] 1400
## [1] 1500
## [1] 1600
## [1] 1700
## [1] 1800
## [1] 1900
## [1] 2000
## [1] 2100
## [1] 2200
## [1] 2300
## [1] 2400
head(connection)
##                x              y       cor rt_diff  mz_diff
## 1 167.0891_0.631 256.1695_0.637 0.9818637   0.006  89.0804
## 2 167.0891_0.631 272.1651_0.645 0.9613305   0.014 105.0760
## 3 256.1695_0.637 272.1651_0.645 0.9517330   0.008  15.9956
## 4 265.1183_0.643 287.1003_0.648 0.9564272   0.005  21.9820
## 5 634.4366_0.676 648.4519_0.687 0.9572685   0.011  14.0153
## 6 648.4519_0.687 736.5043_0.684 0.9511110  -0.003  88.0524

Clustering

clusters <- find_clusters(connections = connection, d_thresh = 0.8)
## 242 components found
## 
## Component 100 / 242 
## Component 200 / 242 
## 55 components found
## 
## 5 components found
# assign a cluster ID to all features. Clusters are named after feature with highest median peak height
features_clustered <- assign_cluster_id(data_notame, clusters, features, name_col = "mz_rt")

# lets see how many features are removed when we only keep one feature per cluster
pulled <- pull_clusters(data_notame, features_clustered, name_col = "mz_rt")
cluster_data <- pulled$cdata
cluster_features <- pulled$cfeatures

# how much did we trim our data down by?
nrow(omicsdata) - nrow(cluster_features)
## [1] 388
# export clustered feature list
write_csv(cluster_features,
          "Notame/notame-clustered-features.csv")

Reduce dataset based on clustering

# transpose the full dataset back to wide so that it is more similar to the notame dataset
imp_meta_omics_wide <- imp_meta_omics %>%
  dplyr::select(-"row_id") %>%
  pivot_wider(names_from = mz_rt,
              values_from = peak_height)

# list of reduced features
clusternames <- cluster_features$mz_rt

# select only the features are in the reduced list
imp_clust <- imp_meta_omics_wide[,c(names(imp_meta_omics_wide) %in% clusternames)]

# bind back sample names
imp_clust <- cbind(imp_meta_omics_wide[1], imp_clust)

tibble(imp_clust)
## # A tibble: 85 × 2,038
##    sample     `189.1598_0.513` `104.1071_0.537` `184.0946_0.54` `162.1126_0.545`
##    <chr>                 <dbl>            <dbl>           <dbl>            <dbl>
##  1 x5109_b1_…            5394.          173277.          51759.          144958.
##  2 x5101_b1_…            3299.          129830.          68092.          159756.
##  3 x5109_b3_…            6079.          173316.          58650.          140823.
##  4 x5103_b3_…            4923.          161982.          53680.          140005.
##  5 x5108_b1_…            3050.          127211.          55879.          141761.
##  6 x5113_b1_…            4468.          125901.          51706.          123194.
##  7 x5112_b3_…            3506.          162774.          51842.          135057.
##  8 x5105_b1_…            7545.          168842.          55074.          144985.
##  9 x5110_b3_…            4195.          193137.          45673.          136221.
## 10 x5110_b1_…            4086.          163577.          51901.          125073 
## # ℹ 75 more rows
## # ℹ 2,033 more variables: `204.1231_0.589` <dbl>, `265.2403_0.591` <dbl>,
## #   `144.102_0.595` <dbl>, `118.0864_0.597` <dbl>, `337.0619_0.611` <dbl>,
## #   `132.102_0.612` <dbl>, `623.1355_0.614` <dbl>, `116.0707_0.623` <dbl>,
## #   `645.1222_0.627` <dbl>, `293.0984_0.628` <dbl>, `100.0757_0.629` <dbl>,
## #   `160.0606_0.629` <dbl>, `353.0342_0.629` <dbl>, `172.1333_0.62` <dbl>,
## #   `120.0808_0.631` <dbl>, `166.0861_0.629` <dbl>, `258.1105_0.632` <dbl>, …

New mz vs rt plot

Let’s see how our clustered data looks now compared to the original

# plot new rt vs mz scatterplot post-clustering
(plot_mzvsrt_postcluster <- cluster_features %>%
  ggplot(aes(x = rt,
             y = mz)) +
  geom_point() +
  theme_minimal() +
  labs(x = "Retention time, min",
       y = "m/z, neutral",
       title = "mz across RT for all features after clustering"))

# plot both scatterplots to compare with and without notame clustering
(scatterplots <- ggarrange(plot_mzvsrt, 
                           plot_mzvsrt_postcluster, 
                           nrow = 2))

Wrangle new data

# add subject column back for a seamless join with metadata
imp_clust$subject <- imp_meta_omics_wide$subject

# bind back new clustered data with metadata
imp_metabind_clust <- right_join(metadata, 
                                 imp_clust,
                                 by = "subject")

Visualize untransformed data

More wrangling

# meta data columns 
str_meta <- colnames(imp_metabind_clust[,4:13])

# change meta data columns to character so that I can change NAs from QCs to "QC"
imp_metabind_clust <- imp_metabind_clust %>%
  mutate_at(str_meta, as.character) 

# replace NAs in metadata columns for QCs
imp_metabind_clust[is.na(imp_metabind_clust)] <- "QC"

# long df
imp_metabind_clust_tidy <- imp_metabind_clust %>%
  pivot_longer(cols = 15:ncol(.),
               names_to = "mz_rt",
               values_to = "rel_abund")

# structure check
head(imp_metabind_clust_tidy)
## # A tibble: 6 × 16
##   subject treatment tomato_or_control sex   bmi   age   tot_chol ldl_chol
##   <chr>   <chr>     <chr>             <chr> <chr> <chr> <chr>    <chr>   
## 1 5107    beta      tomato            M     23.81 68    177      85.4    
## 2 5107    beta      tomato            M     23.81 68    177      85.4    
## 3 5107    beta      tomato            M     23.81 68    177      85.4    
## 4 5107    beta      tomato            M     23.81 68    177      85.4    
## 5 5107    beta      tomato            M     23.81 68    177      85.4    
## 6 5107    beta      tomato            M     23.81 68    177      85.4    
## # ℹ 8 more variables: hdl_chol <chr>, triglycerides <chr>, glucose <chr>,
## #   SBP <chr>, DBP <chr>, sample <chr>, mz_rt <chr>, rel_abund <dbl>

Boxplot

imp_metabind_clust_tidy %>%
  ggplot(aes(x = subject, y = rel_abund, color = treatment)) +
  geom_boxplot(alpha = 0.6) +
  scale_color_manual(values = c("orange", "lightgreen", "gray", "tomato1")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90)) +
  labs(title = "LC-MS (+) Feature Abundances by Sample",
       subtitle = "Unscaled data",
       y = "Relative abundance")

Will need to log transform in order to normalize and actually see the data

Log2 transform

imp_metabind_clust_tidy_log2 <- imp_metabind_clust_tidy %>%
  mutate(rel_abund_log2 = log2(rel_abund))

Boxplot

(bp_data_quality <- imp_metabind_clust_tidy_log2 %>%
  ggplot(aes(x = sample, y = rel_abund_log2, color = treatment)) +
  geom_boxplot(alpha = 0.6) +
  scale_color_manual(values = c("orange", "lightgreen", "gray", "tomato1")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90)) +
  labs(title = "LC-MS (+) Feature Abundances by Sample",
       subtitle = "Log2 transformed data",
       y = "Relative abundance"))

Notame drift correction

Data wrangling

Feature abund df

# filtered and imputed data after notame clustering, transposed
features_forQCcorr <- imp_clust %>%
  dplyr::select(!subject) %>%
  t() %>%
  as.data.frame() %>%
  row_to_names(row_number = "find_header")

# log2 transform
log2_features_forQCcorr <- features_forQCcorr %>%
  mutate_all(as.numeric) %>%
  log2()

# write csv to manually edit
write.csv(log2_features_forQCcorr,
          "Notame/feaures_fromR_forDC_1.csv",
          row.names = TRUE)

Import corrected df (edited so that “mz_rt” could be the row name for row 1)

log2_features_forQCcorr_new <- read.csv("Notame/feaures_forR_forDC_editedmzrt_2.csv",
                                header = FALSE,
                                row.names = 1)


log2_features_forQCcorr_new <- log2_features_forQCcorr_new %>%
  rownames_to_column(var = "mz_rt") %>%
  row_to_names(row_number = 1) %>%
  separate(col = mz_rt,
           into = c("mz", "rt"),
           sep = "_")

write.csv(log2_features_forQCcorr_new,
          "Notame/features_fromR_forDC_3.csv",
          row.names = TRUE)

Pheno df

# separate sampleID and injection order
pheno_data <- imp_clust[1] %>%
  separate(col = sample,
           into = c("sample", "injection_order"),
           # last underscore
           sep = "_(?!.*_)")



# make inj order column numeric
pheno_data <- pheno_data %>%
  mutate_at("injection_order", as.numeric)

t_pheno_data <- as.data.frame(t(pheno_data))

write.csv(t_pheno_data,
          "Notame/pheno_df.csv",
          row.names = TRUE)

Combine pheno and feature dfs manually in excel to create metaboset df.

xf## Import Metaboset

#make sure when converting csv to xlsx that you save as a new file, don't just change the name of the file
metaboset <- read_from_excel("Notame/metaboset.xlsx",
                             split_by = c("column", "Ion mode"))
## INFO [2025-10-06 20:59:15] Detecting corner position
## INFO [2025-10-06 20:59:15] Corner detected correctly at row 3, column D
## INFO [2025-10-06 20:59:15] 
## Extracting sample information from rows 1 to 3 and columns E to CK
## INFO [2025-10-06 20:59:15] Replacing spaces in sample information column names with underscores (_)
## INFO [2025-10-06 20:59:15] Naming the last column of sample information "Datafile"
## INFO [2025-10-06 20:59:15] 
## Extracting feature information from rows 4 to 2040 and columns A to D
## INFO [2025-10-06 20:59:15] Creating Split column from column, Ion mode
## INFO [2025-10-06 20:59:15] Feature_ID column not found, creating feature IDs
## INFO [2025-10-06 20:59:15] Identified m/z column mass and retention time column rt
## INFO [2025-10-06 20:59:15] Identified m/z column mass and retention time column rt
## INFO [2025-10-06 20:59:15] Creating feature IDs from Split, m/z and retention time
## INFO [2025-10-06 20:59:15] Replacing dots (.) in feature information column names with underscores (_)
## INFO [2025-10-06 20:59:15] 
## Extracting feature abundances from rows 4 to 2040 and columns E to CK
## INFO [2025-10-06 20:59:15] 
## Checking sample information
## INFO [2025-10-06 20:59:15] QC column generated from rows containing 'QC'
## INFO [2025-10-06 20:59:15] Sample ID autogenerated from injection orders and prefix ID_
## INFO [2025-10-06 20:59:15] Checking that feature abundances only contain numeric values
## INFO [2025-10-06 20:59:15] 
## Checking feature information
## INFO [2025-10-06 20:59:15] Checking that feature IDs are unique and not stored as numbers
## INFO [2025-10-06 20:59:15] Checking that m/z and retention time values are reasonable
## INFO [2025-10-06 20:59:15] Identified m/z column mass and retention time column rt
## INFO [2025-10-06 20:59:15] Identified m/z column mass and retention time column rt
#construct Metaboset
modes <- construct_metabosets(exprs = metaboset$exprs,
                              pheno_data = metaboset$pheno_data,
                              feature_data = metaboset$feature_data, group_col = "Class")
## Initializing the object(s) with unflagged features
## INFO [2025-10-06 20:59:15] 
## Checking feature information
## INFO [2025-10-06 20:59:15] Checking that feature IDs are unique and not stored as numbers
## INFO [2025-10-06 20:59:15] Checking that feature abundances only contain numeric values
## INFO [2025-10-06 20:59:15] Setting row and column names of exprs based on feature and pheno data
#extract each mode into a single object
mode <- modes$C18_pos

Boxplots before correction

# ordered by injection
(qualityBPs_b4correction <- plot_sample_boxplots(mode, order_by = c("Class", "Injection_order"), title = "Uncorrected feature abundance"))

#ordered by class
plot_sample_boxplots(mode, order_by = "Injection_order", title = "Uncorrected feature abundance")

Boxplots after QC drift correction

drift correction takes up to 2 minutes

mode <- flag_detection(mode, qc_limit = 0.75, group_limit = 0.8)
## INFO [2025-10-06 20:59:21] 
## 0% of features flagged for low detection rate
corrected <- correct_drift(mode, log_transform = FALSE)
## INFO [2025-10-06 20:59:21] 
## Starting drift correction at 2025-10-06 20:59:21.360597
## INFO [2025-10-06 20:59:28] Drift correction performed at 2025-10-06 20:59:28.162445
## INFO [2025-10-06 20:59:30] Inspecting drift correction results 2025-10-06 20:59:30.37915
## INFO [2025-10-06 20:59:35] Drift correction results inspected at 2025-10-06 20:59:35.392669
## INFO [2025-10-06 20:59:35] 
## Drift correction results inspected, report:
## Drift_corrected: 100%

Did drift correction work?

output is percent of the features that were drift corrected. The remaining “low-quality” percent represents features for which the DC did not improve the RSD and D-ratio of the original data.

inspected <- inspect_dc(orig = mode, dc = corrected, check_quality = TRUE)
## INFO [2025-10-06 20:59:37] Inspecting drift correction results 2025-10-06 20:59:37.548909
## INFO [2025-10-06 20:59:44] Drift correction results inspected at 2025-10-06 20:59:44.638607
## INFO [2025-10-06 20:59:44] 
## Drift correction results inspected, report:
## Drift_corrected: 79%,  Low_quality: 21%

Boxplots, corrected

(qualityBPS_driftcorrection <- plot_sample_boxplots(corrected, order_by = c("Class", "Injection_order"), title = "Corrected feature abundance"))

plot_sample_boxplots(corrected, order_by = "Injection_order", title = "Corrected feature abundance")

Compare quality BPs

(qualityBPs_compared <- ggarrange(qualityBPs_b4correction, qualityBPS_driftcorrection,
                    ncol = 1, nrow = 2))

Export new Metaboset to Excel spreadsheet

write_to_excel(corrected, "Notame/metaboset_corrected.xlsx")

Manually edit the df so it only has mass, rt, and sample columns

Import edited Metaboset

metabdata_corrected <- read.csv(file = "Notame/metaboset_corrected_editedforR.csv",
                                check.names = FALSE)

Wrangle new metab data

Combine mz & rt back together

metabdata_corrected_MZ_RT <- metabdata_corrected %>%
  mutate(mass = round(metabdata_corrected$mass, digits = 4), # Decrease number of decimals for m/z & rt
         rt = round(metabdata_corrected$rt, digits = 3),
         .before=1,
         .keep="unused") %>%
  unite(mz_rt, c(mass, rt), remove=TRUE) # Combine m/z & rt with _ in between

Transpose new df

metabdata_corrected_t <- as.data.frame(t(metabdata_corrected_MZ_RT)) %>%
  row_to_names(row_number = "find_header") %>% # make MZ_RT column names
  rownames_to_column(var = "sample") # change rownames to column 1

Bind new data with metadata

I want the new “metabdata_corrected_t” df to look just like “imp_metabind_clust_log2” df

# go back to wide data
imp_metabind_clust_log2 <- imp_metabind_clust_tidy_log2 %>%
  dplyr::select(!rel_abund) %>%
  pivot_wider(names_from = mz_rt,
              values_from = rel_abund_log2)
# bind metadata columns to the new drift corrected df
DC_imp_metabind_clust_log2 <- full_join(imp_metabind_clust_log2[,c(1:14)], 
                                        metabdata_corrected_t, 
                                        by = "sample")

# fix QC subject names
DC_imp_metabind_clust_log2$subject <- str_replace_all(DC_imp_metabind_clust_log2$subject, "c", "qc")

DC_imp_metabind_clust_log2 <- DC_imp_metabind_clust_log2 %>%
  mutate_at("subject", str_sub, start=1, end=4)


# make feature abundances numeric
DC_imp_metabind_clust_log2 <- DC_imp_metabind_clust_log2 %>%
  mutate_at(15:ncol(.), as.numeric)

PCAs

With QCS

Wrangle

PCA.DC_imp_metabind_clust_log2 <- PCA(DC_imp_metabind_clust_log2,  # wide data
                                   quali.sup = 1:14, # remove qualitative variables
                                   graph = FALSE, # don't graph
                                   scale.unit = FALSE) # don't scale, already transformed data

# PCA summary
kable(summary(PCA.DC_imp_metabind_clust_log2))
## 
## Call:
## PCA(X = DC_imp_metabind_clust_log2, scale.unit = FALSE, quali.sup = 1:14,  
##      graph = FALSE) 
## 
## 
## Eigenvalues
##                        Dim.1   Dim.2   Dim.3   Dim.4   Dim.5   Dim.6   Dim.7
## Variance              55.606  43.326  28.623  24.069  19.730  18.346  16.482
## % of var.             15.234  11.869   7.841   6.594   5.405   5.026   4.515
## Cumulative % of var.  15.234  27.103  34.944  41.538  46.943  51.969  56.484
##                        Dim.8   Dim.9  Dim.10  Dim.11  Dim.12  Dim.13  Dim.14
## Variance              10.320   9.932   9.033   8.458   7.767   6.841   5.992
## % of var.              2.827   2.721   2.475   2.317   2.128   1.874   1.641
## Cumulative % of var.  59.311  62.032  64.507  66.824  68.952  70.826  72.467
##                       Dim.15  Dim.16  Dim.17  Dim.18  Dim.19  Dim.20  Dim.21
## Variance               5.723   5.235   4.940   4.621   4.249   3.946   3.809
## % of var.              1.568   1.434   1.353   1.266   1.164   1.081   1.044
## Cumulative % of var.  74.035  75.469  76.822  78.088  79.253  80.334  81.377
##                       Dim.22  Dim.23  Dim.24  Dim.25  Dim.26  Dim.27  Dim.28
## Variance               3.513   3.241   3.130   2.863   2.716   2.425   2.418
## % of var.              0.962   0.888   0.858   0.784   0.744   0.664   0.662
## Cumulative % of var.  82.340  83.228  84.085  84.869  85.613  86.278  86.940
##                       Dim.29  Dim.30  Dim.31  Dim.32  Dim.33  Dim.34  Dim.35
## Variance               2.320   2.175   2.066   1.967   1.794   1.744   1.598
## % of var.              0.636   0.596   0.566   0.539   0.491   0.478   0.438
## Cumulative % of var.  87.576  88.172  88.737  89.276  89.768  90.245  90.683
##                       Dim.36  Dim.37  Dim.38  Dim.39  Dim.40  Dim.41  Dim.42
## Variance               1.556   1.448   1.383   1.331   1.303   1.226   1.193
## % of var.              0.426   0.397   0.379   0.365   0.357   0.336   0.327
## Cumulative % of var.  91.109  91.506  91.885  92.250  92.607  92.943  93.269
##                       Dim.43  Dim.44  Dim.45  Dim.46  Dim.47  Dim.48  Dim.49
## Variance               1.173   1.115   1.069   1.033   1.011   0.957   0.940
## % of var.              0.321   0.306   0.293   0.283   0.277   0.262   0.257
## Cumulative % of var.  93.591  93.896  94.189  94.472  94.749  95.011  95.269
##                       Dim.50  Dim.51  Dim.52  Dim.53  Dim.54  Dim.55  Dim.56
## Variance               0.895   0.851   0.819   0.808   0.789   0.754   0.706
## % of var.              0.245   0.233   0.224   0.221   0.216   0.207   0.193
## Cumulative % of var.  95.514  95.747  95.971  96.193  96.409  96.616  96.809
##                       Dim.57  Dim.58  Dim.59  Dim.60  Dim.61  Dim.62  Dim.63
## Variance               0.694   0.678   0.654   0.629   0.611   0.574   0.550
## % of var.              0.190   0.186   0.179   0.172   0.167   0.157   0.151
## Cumulative % of var.  96.999  97.185  97.364  97.536  97.704  97.861  98.012
##                       Dim.64  Dim.65  Dim.66  Dim.67  Dim.68  Dim.69  Dim.70
## Variance               0.540   0.513   0.493   0.490   0.470   0.463   0.452
## % of var.              0.148   0.141   0.135   0.134   0.129   0.127   0.124
## Cumulative % of var.  98.160  98.300  98.435  98.570  98.698  98.825  98.949
##                       Dim.71  Dim.72  Dim.73  Dim.74  Dim.75  Dim.76  Dim.77
## Variance               0.414   0.381   0.350   0.334   0.331   0.305   0.304
## % of var.              0.114   0.104   0.096   0.092   0.091   0.084   0.083
## Cumulative % of var.  99.063  99.167  99.263  99.355  99.445  99.529  99.612
##                       Dim.78  Dim.79  Dim.80  Dim.81  Dim.82  Dim.83  Dim.84
## Variance               0.288   0.271   0.268   0.262   0.211   0.116   0.000
## % of var.              0.079   0.074   0.073   0.072   0.058   0.032   0.000
## Cumulative % of var.  99.691  99.765  99.839  99.910  99.968 100.000 100.000
## 
## Individuals (the 10 first)
##                       Dist     Dim.1     ctr    cos2     Dim.2     ctr    cos2
## 1                |  20.874 |   0.213   0.001   0.000 |  10.940   3.250   0.275
## 2                |  27.204 | -11.312   2.707   0.173 |  13.374   4.857   0.242
## 3                |  29.175 | -20.166   8.604   0.478 | -13.918   5.260   0.228
## 4                |  24.206 | -13.883   4.078   0.329 |  -9.813   2.615   0.164
## 5                |  15.779 |  -1.225   0.032   0.006 |   0.003   0.000   0.000
## 6                |  19.091 |  -5.076   0.545   0.071 |  -6.393   1.110   0.112
## 7                |  31.853 | -23.048  11.239   0.524 | -10.881   3.215   0.117
## 8                |  18.257 |  -9.826   2.043   0.290 |  -2.831   0.218   0.024
## 9                |  18.984 |   0.289   0.002   0.000 |   4.862   0.642   0.066
## 10               |  22.033 |  -4.972   0.523   0.051 |  10.184   2.816   0.214
##                      Dim.3     ctr    cos2  
## 1                |  -0.041   0.000   0.000 |
## 2                |   0.267   0.003   0.000 |
## 3                |  -2.625   0.283   0.008 |
## 4                |   5.101   1.069   0.044 |
## 5                |   1.988   0.162   0.016 |
## 6                |   2.827   0.328   0.022 |
## 7                |  -6.916   1.966   0.047 |
## 8                |  -0.337   0.005   0.000 |
## 9                |  -1.261   0.065   0.004 |
## 10               |   1.317   0.071   0.004 |
## 
## Variables (the 10 first)
##                     Dim.1    ctr   cos2    Dim.2    ctr   cos2    Dim.3    ctr
## 189.1598_0.513   |  0.106  0.020  0.035 | -0.049  0.006  0.007 |  0.060  0.013
## 104.1071_0.537   |  0.048  0.004  0.061 | -0.010  0.000  0.003 |  0.014  0.001
## 184.0946_0.54    | -0.005  0.000  0.001 |  0.024  0.001  0.019 |  0.022  0.002
## 162.1126_0.545   |  0.028  0.001  0.030 |  0.023  0.001  0.021 |  0.013  0.001
## 204.1231_0.589   |  0.004  0.000  0.000 |  0.130  0.039  0.207 |  0.060  0.013
## 265.2403_0.591   | -0.018  0.001  0.014 | -0.005  0.000  0.001 |  0.003  0.000
## 144.102_0.595    |  0.307  0.169  0.044 |  0.076  0.013  0.003 | -0.100  0.035
## 118.0864_0.597   |  0.025  0.001  0.009 |  0.075  0.013  0.081 |  0.016  0.001
## 337.0619_0.611   |  0.000  0.000  0.000 |  0.019  0.001  0.058 |  0.015  0.001
## 132.102_0.612    |  0.022  0.001  0.008 | -0.098  0.022  0.171 | -0.013  0.001
##                    cos2  
## 189.1598_0.513    0.011 |
## 104.1071_0.537    0.005 |
## 184.0946_0.54     0.017 |
## 162.1126_0.545    0.007 |
## 204.1231_0.589    0.044 |
## 265.2403_0.591    0.000 |
## 144.102_0.595     0.005 |
## 118.0864_0.597    0.004 |
## 337.0619_0.611    0.038 |
## 132.102_0.612     0.003 |
## 
## Supplementary categories (the 10 first)
##                       Dist     Dim.1    cos2  v.test     Dim.2    cos2  v.test
## 5101             |  17.414 |  -1.630   0.009  -0.311 |   6.585   0.143   1.423
## 5102             |  14.960 |   0.172   0.000   0.033 |  -5.929   0.157  -1.282
## 5103             |  19.338 | -11.845   0.375  -2.260 |   4.470   0.053   0.966
## 5104             |  18.160 |  -8.310   0.209  -1.586 |  -8.516   0.220  -1.841
## 5105             |  16.415 |  -9.390   0.327  -1.792 |  -2.961   0.033  -0.640
## 5107             |  21.298 |  -5.550   0.068  -1.059 |  12.157   0.326   2.628
## 5108             |  21.982 | -14.027   0.407  -2.676 |   3.989   0.033   0.862
## 5109             |  24.521 | -17.024   0.482  -3.248 | -11.866   0.234  -2.565
## 5110             |  14.906 |  -8.665   0.338  -1.653 |   3.600   0.058   0.778
## 5111             |  16.322 |   6.183   0.144   1.180 |   0.501   0.001   0.108
##                      Dim.3    cos2  v.test  
## 5101             |   0.475   0.001   0.126 |
## 5102             |   1.902   0.016   0.506 |
## 5103             |  -6.347   0.108  -1.688 |
## 5104             |   1.245   0.005   0.331 |
## 5105             |   5.011   0.093   1.333 |
## 5107             |   0.113   0.000   0.030 |
## 5108             |  -2.232   0.010  -0.594 |
## 5109             |   1.238   0.003   0.329 |
## 5110             |   0.604   0.002   0.161 |
## 5111             |  -7.713   0.223  -2.051 |
Dist Dim.1 cos2 v.test Dim.2 cos2 v.test Dim.3 cos2 v.test
5101 | 17.414 | -1.630 0.009 -0.311 | 6.585 0.143 1.423 | 0.475 0.001 0.126 |
5102 | 14.960 | 0.172 0.000 0.033 | -5.929 0.157 -1.282 | 1.902 0.016 0.506 |
5103 | 19.338 | -11.845 0.375 -2.260 | 4.470 0.053 0.966 | -6.347 0.108 -1.688 |
5104 | 18.160 | -8.310 0.209 -1.586 | -8.516 0.220 -1.841 | 1.245 0.005 0.331 |
5105 | 16.415 | -9.390 0.327 -1.792 | -2.961 0.033 -0.640 | 5.011 0.093 1.333 |
5107 | 21.298 | -5.550 0.068 -1.059 | 12.157 0.326 2.628 | 0.113 0.000 0.030 |
5108 | 21.982 | -14.027 0.407 -2.676 | 3.989 0.033 0.862 | -2.232 0.010 -0.594 |
5109 | 24.521 | -17.024 0.482 -3.248 | -11.866 0.234 -2.565 | 1.238 0.003 0.329 |
5110 | 14.906 | -8.665 0.338 -1.653 | 3.600 0.058 0.778 | 0.604 0.002 0.161 |
5111 | 16.322 | 6.183 0.144 1.180 | 0.501 0.001 0.108 | -7.713 0.223 -2.051 |
# pull PC coordinates into df
PC_coord_QC_log2 <- as.data.frame(PCA.DC_imp_metabind_clust_log2$ind$coord)

# bind back metadata from cols 1-14
PC_coord_QC_log2 <- bind_cols(DC_imp_metabind_clust_log2[,1:14], PC_coord_QC_log2)

# grab some variance explained
importance_QC <- PCA.DC_imp_metabind_clust_log2$eig

# set variance explained with PC1, round to 2 digits
PC1_withQC <- round(importance_QC[1,2], 2)

# set variance explained with PC2, round to 2 digits
PC2_withQC <- round(importance_QC[2,2], 2)

Plots

Using FactoExtra package

# scree plot
fviz_eig(PCA.DC_imp_metabind_clust_log2)

# get eigenvalues
kable(get_eig(PCA.DC_imp_metabind_clust_log2))
eigenvalue variance.percent cumulative.variance.percent
Dim.1 55.6062932 15.2335459 15.23355
Dim.2 43.3257818 11.8692552 27.10280
Dim.3 28.6228608 7.8413366 34.94414
Dim.4 24.0687248 6.5937145 41.53785
Dim.5 19.7296407 5.4050067 46.94286
Dim.6 18.3461676 5.0259992 51.96886
Dim.7 16.4819103 4.5152791 56.48414
Dim.8 10.3197899 2.8271439 59.31128
Dim.9 9.9321320 2.7209436 62.03222
Dim.10 9.0331512 2.4746646 64.50689
Dim.11 8.4578886 2.3170693 66.82396
Dim.12 7.7665970 2.1276874 68.95165
Dim.13 6.8412777 1.8741928 70.82584
Dim.14 5.9917494 1.6414615 72.46730
Dim.15 5.7226639 1.5677445 74.03504
Dim.16 5.2347639 1.4340826 75.46913
Dim.17 4.9396562 1.3532367 76.82236
Dim.18 4.6214994 1.2660765 78.08844
Dim.19 4.2494361 1.1641484 79.25259
Dim.20 3.9460214 1.0810269 80.33362
Dim.21 3.8094183 1.0436040 81.37722
Dim.22 3.5129854 0.9623951 82.33962
Dim.23 3.2411405 0.8879222 83.22754
Dim.24 3.1304509 0.8575984 84.08514
Dim.25 2.8626531 0.7842342 84.86937
Dim.26 2.7157455 0.7439884 85.61336
Dim.27 2.4245963 0.6642270 86.27759
Dim.28 2.4181283 0.6624550 86.94004
Dim.29 2.3199122 0.6355484 87.57559
Dim.30 2.1752966 0.5959304 88.17152
Dim.31 2.0655342 0.5658606 88.73738
Dim.32 1.9665669 0.5387481 89.27613
Dim.33 1.7939804 0.4914674 89.76760
Dim.34 1.7435959 0.4776644 90.24526
Dim.35 1.5982665 0.4378509 90.68311
Dim.36 1.5562239 0.4263332 91.10944
Dim.37 1.4484581 0.3968104 91.50625
Dim.38 1.3832387 0.3789433 91.88520
Dim.39 1.3310969 0.3646588 92.24986
Dim.40 1.3032682 0.3570351 92.60689
Dim.41 1.2257640 0.3358025 92.94269
Dim.42 1.1926630 0.3267344 93.26943
Dim.43 1.1730456 0.3213601 93.59079
Dim.44 1.1153255 0.3055475 93.89634
Dim.45 1.0692251 0.2929181 94.18925
Dim.46 1.0325166 0.2828617 94.47212
Dim.47 1.0110964 0.2769935 94.74911
Dim.48 0.9566692 0.2620830 95.01119
Dim.49 0.9396273 0.2574143 95.26861
Dim.50 0.8951120 0.2452192 95.51383
Dim.51 0.8512604 0.2332059 95.74703
Dim.52 0.8190131 0.2243716 95.97140
Dim.53 0.8083077 0.2214388 96.19284
Dim.54 0.7894961 0.2162853 96.40913
Dim.55 0.7543496 0.2066568 96.61578
Dim.56 0.7058323 0.1933653 96.80915
Dim.57 0.6939990 0.1901235 96.99927
Dim.58 0.6778229 0.1856921 97.18497
Dim.59 0.6537120 0.1790868 97.36405
Dim.60 0.6288967 0.1722885 97.53634
Dim.61 0.6113481 0.1674810 97.70382
Dim.62 0.5738358 0.1572044 97.86103
Dim.63 0.5503131 0.1507603 98.01179
Dim.64 0.5396885 0.1478496 98.15964
Dim.65 0.5134275 0.1406553 98.30029
Dim.66 0.4929250 0.1350386 98.43533
Dim.67 0.4902101 0.1342948 98.56962
Dim.68 0.4701340 0.1287949 98.69842
Dim.69 0.4627609 0.1267750 98.82519
Dim.70 0.4524660 0.1239547 98.94915
Dim.71 0.4143090 0.1135014 99.06265
Dim.72 0.3813885 0.1044828 99.16713
Dim.73 0.3499514 0.0958705 99.26300
Dim.74 0.3340413 0.0915118 99.35452
Dim.75 0.3309475 0.0906643 99.44518
Dim.76 0.3054864 0.0836891 99.52887
Dim.77 0.3043578 0.0833799 99.61225
Dim.78 0.2876988 0.0788161 99.69106
Dim.79 0.2711268 0.0742762 99.76534
Dim.80 0.2680656 0.0734375 99.83878
Dim.81 0.2616145 0.0716702 99.91045
Dim.82 0.2109577 0.0577926 99.96824
Dim.83 0.1158401 0.0317348 99.99998
Dim.84 0.0000861 0.0000236 100.00000
# scores plot
fviz_pca_ind(PCA.DC_imp_metabind_clust_log2)

Manual scores plot

# manual scores plot
(PCA_withQCs <- PC_coord_QC_log2 %>%
  ggplot(aes(x = Dim.1, y = Dim.2,
             fill = factor(treatment, levels = c("control", "beta", "red", "QC")),
             text = sample)) +
  geom_point(shape = 21, alpha = 0.8) +
  scale_fill_manual(values = c("lightgreen", "orange", "tomato", "lightgray")) +
  scale_color_manual(values = "black") +  
  theme_minimal() +
  coord_fixed(PC2_withQC/PC1_withQC) +
  labs(x = glue::glue("PC1: {PC1_withQC}%"),
       y = glue::glue("PC2: {PC2_withQC}%"),
       fill = "Group",
       title = "Principal Components Analysis Scores Plot",
       subtitle = "Log2 transformed data"))

ggplotly(PCA_withQCs, tooltip = "text")

Without QCs

Wrangle

DC_imp_metabind_clust_log2_noQCs <- DC_imp_metabind_clust_log2 %>%
  filter(treatment != "QC")

PCA.DC_imp_metabind_clust_log2_noQCs <- PCA(DC_imp_metabind_clust_log2_noQCs, # wide data
                               quali.sup=1:14, # remove qualitative variables
                               graph=FALSE, # don't graph
                               scale.unit=FALSE) # don't scale, we already did this

# look at summary
kable(summary(PCA.DC_imp_metabind_clust_log2_noQCs))
## 
## Call:
## PCA(X = DC_imp_metabind_clust_log2_noQCs, scale.unit = FALSE,  
##      quali.sup = 1:14, graph = FALSE) 
## 
## 
## Eigenvalues
##                        Dim.1   Dim.2   Dim.3   Dim.4   Dim.5   Dim.6   Dim.7
## Variance              63.124  52.598  32.601  23.938  22.416  20.081  12.491
## % of var.             15.661  13.049   8.088   5.939   5.561   4.982   3.099
## Cumulative % of var.  15.661  28.710  36.798  42.737  48.299  53.281  56.380
##                        Dim.8   Dim.9  Dim.10  Dim.11  Dim.12  Dim.13  Dim.14
## Variance              12.079  11.055  10.144   9.321   8.387   7.467   6.945
## % of var.              2.997   2.743   2.517   2.313   2.081   1.853   1.723
## Cumulative % of var.  59.377  62.119  64.636  66.948  69.029  70.882  72.605
##                       Dim.15  Dim.16  Dim.17  Dim.18  Dim.19  Dim.20  Dim.21
## Variance               6.330   6.079   5.613   5.174   4.853   4.618   4.296
## % of var.              1.571   1.508   1.392   1.284   1.204   1.146   1.066
## Cumulative % of var.  74.175  75.683  77.076  78.360  79.564  80.709  81.775
##                       Dim.22  Dim.23  Dim.24  Dim.25  Dim.26  Dim.27  Dim.28
## Variance               4.010   3.782   3.479   3.295   2.939   2.900   2.825
## % of var.              0.995   0.938   0.863   0.817   0.729   0.720   0.701
## Cumulative % of var.  82.770  83.708  84.572  85.389  86.118  86.838  87.538
##                       Dim.29  Dim.30  Dim.31  Dim.32  Dim.33  Dim.34  Dim.35
## Variance               2.638   2.544   2.364   2.171   2.112   1.960   1.918
## % of var.              0.654   0.631   0.586   0.539   0.524   0.486   0.476
## Cumulative % of var.  88.193  88.824  89.411  89.949  90.473  90.959  91.435
##                       Dim.36  Dim.37  Dim.38  Dim.39  Dim.40  Dim.41  Dim.42
## Variance               1.782   1.676   1.636   1.567   1.481   1.435   1.431
## % of var.              0.442   0.416   0.406   0.389   0.367   0.356   0.355
## Cumulative % of var.  91.878  92.293  92.699  93.088  93.455  93.811  94.166
##                       Dim.43  Dim.44  Dim.45  Dim.46  Dim.47  Dim.48  Dim.49
## Variance               1.351   1.296   1.266   1.241   1.162   1.122   1.080
## % of var.              0.335   0.322   0.314   0.308   0.288   0.278   0.268
## Cumulative % of var.  94.501  94.823  95.137  95.445  95.733  96.012  96.280
##                       Dim.50  Dim.51  Dim.52  Dim.53  Dim.54  Dim.55  Dim.56
## Variance               1.026   0.985   0.985   0.943   0.931   0.856   0.844
## % of var.              0.254   0.244   0.244   0.234   0.231   0.212   0.209
## Cumulative % of var.  96.534  96.779  97.023  97.257  97.488  97.700  97.910
##                       Dim.57  Dim.58  Dim.59  Dim.60  Dim.61  Dim.62  Dim.63
## Variance               0.817   0.780   0.755   0.739   0.684   0.660   0.641
## % of var.              0.203   0.193   0.187   0.183   0.170   0.164   0.159
## Cumulative % of var.  98.112  98.306  98.493  98.677  98.846  99.010  99.169
##                       Dim.64  Dim.65  Dim.66  Dim.67  Dim.68  Dim.69
## Variance               0.600   0.594   0.562   0.556   0.537   0.500
## % of var.              0.149   0.147   0.139   0.138   0.133   0.124
## Cumulative % of var.  99.318  99.465  99.605  99.743  99.876 100.000
## 
## Individuals (the 10 first)
##                       Dist     Dim.1     ctr    cos2     Dim.2     ctr    cos2
## 1                |  20.832 |   1.319   0.039   0.004 |  10.907   3.231   0.274
## 2                |  26.942 | -10.666   2.575   0.157 |  13.458   4.919   0.250
## 3                |  28.516 | -19.057   8.219   0.447 | -13.776   5.154   0.233
## 4                |  23.768 | -13.331   4.022   0.315 |  -9.702   2.556   0.167
## 5                |  15.482 |   0.043   0.000   0.000 |  -0.031   0.000   0.000
## 6                |  18.649 |  -3.865   0.338   0.043 |  -6.393   1.110   0.118
## 7                |  31.228 | -22.079  11.032   0.500 | -10.718   3.120   0.118
## 8                |  17.890 |  -9.136   1.889   0.261 |  -2.765   0.208   0.024
## 9                |  18.776 |   1.822   0.075   0.009 |   4.810   0.628   0.066
## 10               |  21.952 |  -4.262   0.411   0.038 |  10.211   2.832   0.216
##                      Dim.3     ctr    cos2  
## 1                |   1.131   0.056   0.003 |
## 2                |  -1.834   0.147   0.005 |
## 3                |  -3.779   0.626   0.018 |
## 4                |   5.796   1.472   0.059 |
## 5                |   4.997   1.094   0.104 |
## 6                |   5.488   1.320   0.087 |
## 7                | -11.334   5.629   0.132 |
## 8                |  -1.407   0.087   0.006 |
## 9                |   1.919   0.161   0.010 |
## 10               |   1.374   0.083   0.004 |
## 
## Variables (the 10 first)
##                     Dim.1    ctr   cos2    Dim.2    ctr   cos2    Dim.3    ctr
## 189.1598_0.513   |  0.078  0.010  0.017 | -0.053  0.005  0.008 |  0.013  0.001
## 104.1071_0.537   |  0.055  0.005  0.068 | -0.012  0.000  0.003 |  0.037  0.004
## 184.0946_0.54    | -0.012  0.000  0.004 |  0.026  0.001  0.021 |  0.016  0.001
## 162.1126_0.545   |  0.033  0.002  0.034 |  0.025  0.001  0.020 |  0.028  0.002
## 204.1231_0.589   |  0.002  0.000  0.000 |  0.144  0.039  0.208 |  0.086  0.022
## 265.2403_0.591   | -0.023  0.001  0.019 | -0.006  0.000  0.001 | -0.008  0.000
## 144.102_0.595    |  0.243  0.093  0.024 |  0.084  0.014  0.003 | -0.260  0.207
## 118.0864_0.597   |  0.025  0.001  0.007 |  0.083  0.013  0.082 |  0.017  0.001
## 337.0619_0.611   | -0.007  0.000  0.007 |  0.021  0.001  0.067 |  0.004  0.000
## 132.102_0.612    |  0.022  0.001  0.007 | -0.109  0.022  0.172 | -0.022  0.001
##                    cos2  
## 189.1598_0.513    0.000 |
## 104.1071_0.537    0.030 |
## 184.0946_0.54     0.007 |
## 162.1126_0.545    0.025 |
## 204.1231_0.589    0.074 |
## 265.2403_0.591    0.003 |
## 144.102_0.595     0.028 |
## 118.0864_0.597    0.003 |
## 337.0619_0.611    0.002 |
## 132.102_0.612     0.007 |
## 
## Supplementary categories (the 10 first)
##                       Dist     Dim.1    cos2  v.test     Dim.2    cos2  v.test
## 5101             |  17.122 |  -0.213   0.000  -0.038 |   6.548   0.146   1.286
## 5102             |  14.884 |   1.148   0.006   0.206 |  -5.963   0.161  -1.171
## 5103             |  18.649 | -10.429   0.313  -1.870 |   4.525   0.059   0.889
## 5104             |  17.990 |  -8.003   0.198  -1.435 |  -8.444   0.220  -1.659
## 5105             |  16.049 |  -8.890   0.307  -1.594 |  -2.885   0.032  -0.567
## 5107             |  21.110 |  -4.674   0.049  -0.838 |  12.183   0.333   2.393
## 5108             |  21.374 | -12.876   0.363  -2.309 |   4.078   0.036   0.801
## 5109             |  23.911 | -16.194   0.459  -2.904 | -11.739   0.241  -2.306
## 5110             |  14.250 |  -7.541   0.280  -1.352 |   3.638   0.065   0.715
## 5111             |  16.413 |   7.756   0.223   1.391 |   0.379   0.001   0.074
##                      Dim.3    cos2  v.test  
## 5101             |   3.618   0.045   0.903 |
## 5102             |   4.207   0.080   1.050 |
## 5103             |  -8.042   0.186  -2.007 |
## 5104             |  -0.595   0.001  -0.149 |
## 5105             |   5.463   0.116   1.363 |
## 5107             |  -0.351   0.000  -0.088 |
## 5108             |  -2.850   0.018  -0.711 |
## 5109             |   1.008   0.002   0.252 |
## 5110             |   1.196   0.007   0.298 |
## 5111             |  -6.722   0.168  -1.677 |
Dist Dim.1 cos2 v.test Dim.2 cos2 v.test Dim.3 cos2 v.test
5101 | 17.122 | -0.213 0.000 -0.038 | 6.548 0.146 1.286 | 3.618 0.045 0.903 |
5102 | 14.884 | 1.148 0.006 0.206 | -5.963 0.161 -1.171 | 4.207 0.080 1.050 |
5103 | 18.649 | -10.429 0.313 -1.870 | 4.525 0.059 0.889 | -8.042 0.186 -2.007 |
5104 | 17.990 | -8.003 0.198 -1.435 | -8.444 0.220 -1.659 | -0.595 0.001 -0.149 |
5105 | 16.049 | -8.890 0.307 -1.594 | -2.885 0.032 -0.567 | 5.463 0.116 1.363 |
5107 | 21.110 | -4.674 0.049 -0.838 | 12.183 0.333 2.393 | -0.351 0.000 -0.088 |
5108 | 21.374 | -12.876 0.363 -2.309 | 4.078 0.036 0.801 | -2.850 0.018 -0.711 |
5109 | 23.911 | -16.194 0.459 -2.904 | -11.739 0.241 -2.306 | 1.008 0.002 0.252 |
5110 | 14.250 | -7.541 0.280 -1.352 | 3.638 0.065 0.715 | 1.196 0.007 0.298 |
5111 | 16.413 | 7.756 0.223 1.391 | 0.379 0.001 0.074 | -6.722 0.168 -1.677 |
# pull PC coordinates into df
PC_coord_noQCs_log2 <- as.data.frame(PCA.DC_imp_metabind_clust_log2_noQCs$ind$coord)

# bind back metadata from cols 1-14
PC_coord_noQCs_log2 <- bind_cols(DC_imp_metabind_clust_log2_noQCs[,1:14], PC_coord_noQCs_log2)

# grab some variance explained
importance_noQC <- PCA.DC_imp_metabind_clust_log2_noQCs$eig

# set variance explained with PC1, round to 2 digits
PC1_noQC <- round(importance_noQC[1,2], 2)

# set variance explained with PC2, round to 2 digits
PC2_noQC <- round(importance_noQC[2,2], 2)

Plots

Using FactoExtra

# scree plot
fviz_eig(PCA.DC_imp_metabind_clust_log2_noQCs)

# scores plot
fviz_pca_ind(PCA.DC_imp_metabind_clust_log2_noQCs)

Manual scores plot

# wrangling data prior to plot for ease
PC_coord_noQCs_log2 <- PC_coord_noQCs_log2 %>%
  mutate(sample2 = sample) %>%
  mutate_at("sample2", str_sub, start=7, end=8) %>%
  mutate(period = sample2) %>%
  unite(treatment_period, "treatment", "period", sep = "_", remove = FALSE) %>%
  dplyr::select(!sample2) %>%
  mutate_at("period", as.factor) %>%
  # relevel factors
  mutate(treatment_period = fct_relevel(treatment_period, c("control_b1", "control_b3", 
                                                            "beta_b1", "beta_b3",
                                                            "red_b1", "red_b3")),
         treatment = fct_relevel(treatment, c("control", "beta", "red")))
(PCA_withoutQCs <- PC_coord_noQCs_log2 %>%
   ggplot(aes(x = Dim.1, y = Dim.2,
             fill = treatment_period,
             text = sample)) +
   geom_point(shape = 21, alpha = 0.8) +
   geom_hline(yintercept = 0, linetype = "dashed", alpha=0.5) +
   geom_vline(xintercept = 0, linetype = "dashed", alpha=0.5) +
  scale_fill_manual(values = c("darkseagreen2", "darkgreen", 
                               "tan3", "orangered2",
                               "lavenderblush3", "darkred")) +
  scale_color_manual(values = "black") +  
  theme_minimal() +
  coord_fixed(PC2_noQC/PC1_noQC) +
  labs(x = glue::glue("PC1: {PC1_noQC}%"),
       y = glue::glue("PC2: {PC2_noQC}%"),
       fill = "Group",
       title = "Principal Components Analysis Scores Plot",
       subtitle = "Log2 transformed data, No QCs"))

ggplotly(PCA_withoutQCs, tooltip = "text")

Faceted by period

(PCA_faceted_noQCs <- PC_coord_noQCs_log2 %>%
   ggplot(aes(x = Dim.1, y = Dim.2,
             fill = treatment_period,
             text = sample)) +
   geom_point(shape = 21, alpha = 0.8) +
   geom_hline(yintercept = 0, linetype = "dashed", alpha=0.5) +
   geom_vline(xintercept = 0, linetype = "dashed", alpha=0.5) +
  scale_fill_manual(values = c("darkseagreen2", "darkgreen", 
                               "tan3", "orangered2",
                               "lavenderblush3", "darkred")) +
  scale_color_manual(values = "black") +  
  theme_bw() +
  coord_fixed(PC2_noQC/PC1_noQC) +
  labs(x = glue::glue("PC1: {PC1_noQC}%"),
       y = glue::glue("PC2: {PC2_noQC}%"),
       fill = "treatment_period",
       title = "Principal Components Analysis Scores Plot",
       subtitle = "Log2 transformed data, No QCs") +
  facet_wrap( ~ period) +
   theme(strip.background = element_rect(fill="white")))

ggplotly(PCA_faceted_noQCs, tooltip = "text")
PC_coord_noQCs_log2 %>%
   ggplot(aes(x = Dim.1, y = Dim.2,
             fill = sex,
             text = sample)) +
   geom_point(shape = 21, alpha = 0.8) +
   geom_hline(yintercept = 0, linetype = "dashed", alpha=0.5) +
   geom_vline(xintercept = 0, linetype = "dashed", alpha=0.5) +
  scale_fill_manual(values = c("purple", "blue")) +
  scale_color_manual(values = "black") +  
  theme_bw() +
  coord_fixed(PC2_noQC/PC1_noQC) +
  labs(x = glue::glue("PC1: {PC1_noQC}%"),
       y = glue::glue("PC2: {PC2_noQC}%"),
       fill = "sex",
       title = "Principal Components Analysis Scores Plot",
       subtitle = "Log2 transformed data, No QCs") +
  facet_wrap( ~ period) +
   theme(strip.background = element_rect(fill="white"))

Faceted by trt

(PCA_faceted_noQCs2 <- PC_coord_noQCs_log2 %>%
   ggplot(aes(x = Dim.1, y = Dim.2,
             fill = treatment_period,
             text = sample)) +
   geom_point(shape = 21, alpha = 0.8) +
   geom_hline(yintercept = 0, linetype = "dashed", alpha=0.5) +
   geom_vline(xintercept = 0, linetype = "dashed", alpha=0.5) +
  scale_fill_manual(values = c("darkseagreen2", "darkgreen", 
                               "tan", "orangered2",
                               "lavenderblush3", "darkred"),
                    labels = c("pre control", "post control",
                               "pre beta", "post beta",
                               "pre lyc", "post lyc")) +
  scale_color_manual(values = "black") +  
  theme_bw() +
  coord_fixed(PC2_noQC/PC1_noQC) +
  labs(x = glue::glue("PC1: {PC1_noQC}%"),
       y = glue::glue("PC2: {PC2_noQC}%"),
       fill = "Intervention timepoint",
       title = "Principal Components Analysis Scores Plot",
       subtitle = "Log2 transformed data faceted by treatment group ") +
   facet_wrap( ~ treatment))

ggplotly(PCA_faceted_noQCs2, tooltip = "text")

Export plot

ggsave(plot = PCA_faceted_noQCs2,
       filename = "plots and figures/PCA-faceted-by-group-lipidomicsPOS.svg",
       bg = "transparent",
       height = 3,
       width = 8)
PC_coord_noQCs_log2 %>%
   ggplot(aes(x = Dim.1, y = Dim.2,
             fill = sex,
             text = sample)) +
   geom_point(shape = 21, alpha = 0.8) +
   geom_hline(yintercept = 0, linetype = "dashed", alpha=0.5) +
   geom_vline(xintercept = 0, linetype = "dashed", alpha=0.5) +
  scale_fill_manual(values = c("purple", "blue")) +
  scale_color_manual(values = "black") +  
  theme_bw() +
  coord_fixed(PC2_noQC/PC1_noQC) +
  labs(x = glue::glue("PC1: {PC1_noQC}%"),
       y = glue::glue("PC2: {PC2_noQC}%"),
       fill = "sex",
       title = "Principal Components Analysis Scores Plot",
       subtitle = "Log2 transformed data, No QCs") +
  facet_wrap( ~ treatment) +
   theme(strip.background = element_rect(fill="white"))

Faceted by sex

(PC_coord_facetsex <- PC_coord_noQCs_log2 %>%
   ggplot(aes(x = Dim.1, y = Dim.2,
             fill = treatment_period,
             text = sample)) +
   geom_point(shape = 21, alpha = 0.8) +
   geom_hline(yintercept = 0, linetype = "dashed", alpha=0.5) +
   geom_vline(xintercept = 0, linetype = "dashed", alpha=0.5) +
  scale_fill_manual(values = c("darkseagreen2", "darkgreen", 
                               "tan3", "orangered2",
                               "lavenderblush3", "darkred")) +
  scale_color_manual(values = "black") +  
  theme_bw() +
  coord_fixed(PC2_noQC/PC1_noQC) +
  labs(x = glue::glue("PC1: {PC1_noQC}%"),
       y = glue::glue("PC2: {PC2_noQC}%"),
       fill = "sex",
       title = "Principal Components Analysis Scores Plot",
       subtitle = "Log2 transformed data, No QCs") +
  facet_wrap( ~ sex) +
   theme(strip.background = element_rect(fill="white")))

ggplotly(PC_coord_facetsex, tooltip = "text")

Multilevel PCA

This type of PCA accounts for the structure of paired data, allowing for a more accurate assessment of biological differences between treatment groups, not differences attributed to the natural variation between individuals.

See http://mixomics.org/methods/multilevel/ for more info.

Wrangle

Data_forMPCA <- DC_imp_metabind_clust_log2_noQCs %>%
  mutate_at("subject", as.factor) %>%
  mutate(sample2 = sample,
         b_c = carotenoids$b_c_nmol_l_plasma,
         lyc = carotenoids$lyc_nmol_l_plasma,
         apo13one = carotenoids$apo13one_nmol_l_plasma,
         retinol = carotenoids$retinol_nmol_l_plasma,
         total_carot = carotenoids$total_carotenoids) %>%
  mutate_at("sample2", str_sub, start=7, end=8) %>%
  mutate(period = sample2) %>%
  dplyr::select(c(1:14), period, b_c, lyc, apo13one, retinol, total_carot, everything()) %>%
  dplyr::select(!sample2)
 

summary(as.factor(Data_forMPCA$subject))
## 5101 5102 5103 5104 5105 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 
##    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2 
## 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 
##    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2    2 
## 5134 5135 5136 
##    2    2    2
# make a vector for meta variables
(metavar <- Data_forMPCA[,c(1:20)] %>%
    colnames())
##  [1] "subject"           "treatment"         "tomato_or_control"
##  [4] "sex"               "bmi"               "age"              
##  [7] "tot_chol"          "ldl_chol"          "hdl_chol"         
## [10] "triglycerides"     "glucose"           "SBP"              
## [13] "DBP"               "sample"            "period"           
## [16] "b_c"               "lyc"               "apo13one"         
## [19] "retinol"           "total_carot"

Regular PCA

mixOmicsPCA.result <- mixOmics::pca(Data_forMPCA[,!names(Data_forMPCA) %in% metavar],
                            scale = FALSE,
                            center = FALSE)

plotIndiv(mixOmicsPCA.result, 
          ind.names = Data_forMPCA$subject, 
          group = Data_forMPCA$treatment, 
          legend = TRUE, 
          legend.title = "Treatment", 
          title = 'Regular PCA, Lipidomics C18 (+)')

Multilevel PCA

With all data

multilevelPCA.result <- mixOmics::pca(Data_forMPCA[,-(c(1:20))], 
                            multilevel = Data_forMPCA$subject,
                            scale = FALSE,
                            center = FALSE,ncomp = 10)

plotIndiv(multilevelPCA.result, 
          ind.names = Data_forMPCA$period, 
          group = Data_forMPCA$treatment, 
          legend = TRUE, 
          legend.title = "Treatment", 
          title = 'Multilevel PCA, Lipidomics C18 (+)',comp = c(1,2))

Loadings

plotLoadings(multilevelPCA.result, ndisplay = 30)

PCAtools

Data wrangling

# create rel abund df suitable for PCAtools package
imp_clust_omicsdata_forPCAtools <- Data_forMPCA %>%
  # select only sample ID and feature columns
  dplyr::select(sample,
                21:ncol(.)) %>%
  # transpose
  t() %>%
  # convert back to df
  as.data.frame()

names(imp_clust_omicsdata_forPCAtools) <- imp_clust_omicsdata_forPCAtools[1,] # make samp;e IDs column names

imp_clust_omicsdata_forPCAtools <- imp_clust_omicsdata_forPCAtools[-1,] # remove sample ID row

# create metadata df suitable for PCAtools pckg

metadata_forPCAtools <- Data_forMPCA[,1:20]

metadata_forPCAtools <- metadata_forPCAtools %>%
  unite("treatment_period", c("treatment", "period"), sep = "_", remove = FALSE) %>%
  column_to_rownames("sample")
  

# create a vector so that col names in abundance df matches metadata df
order_forPCAtools <- match(colnames(imp_clust_omicsdata_forPCAtools), rownames(metadata_forPCAtools))

# reorder col names in abundance df so that it matches metadata
log2_abundances_reordered_forPCAtools <- imp_clust_omicsdata_forPCAtools[,order_forPCAtools] %>%
  # change abundance df to numeric
  mutate_all(as.numeric)

PCA

colby trt

# pca
p <- PCAtools::pca(log2_abundances_reordered_forPCAtools,
                   metadata = metadata_forPCAtools,
                   scale = FALSE, # using scaled data already (log2 transformed)
         
)

biplot(p, 
       lab = paste0(metadata_forPCAtools$subject),
       colby = 'treatment',
       colkey = c("control" = "lightgreen",
                  "beta" = "orange",
                  "red" = "tomato"),
       hline = 0, vline = 0,
       legendPosition = 'right',
       title = "PCA Scores Plot with Loadings",
       subtitle = "Log2 transformed data. 95% CI ellipses",
       ellipse = TRUE,
       ellipseType = 't', # assumes multivariate
       ellipseLevel = 0.95,
       ellipseFill = TRUE,
       ellipseAlpha = 0.2,
       ellipseLineSize = 0,
       showLoadings = TRUE,ntopLoadings = 10)

colby period

# pca

biplot(p,
       lab = paste0(metadata_forPCAtools$subject),
       colby = 'period',
       colkey = c("b1" = "gray",
                  "b3" = "pink"),
       hline = 0, vline = 0,
       legendPosition = 'right',
       title = "PCA Scores Plot with Loadings",
       subtitle = "Log2 transformed data. 95% CI ellipses",
       ellipse = TRUE,
       ellipseType = 't', # assumes multivariate
       ellipseLevel = 0.95,
       ellipseFill = TRUE,
       ellipseAlpha = 0.2,
       ellipseLineSize = 0,
       showLoadings = TRUE)

colby trt_period

biplot(p,
       lab = paste0(metadata_forPCAtools$subject),
       colby = 'treatment_period',
       colkey = c("control_b1" = "darkseagreen2",
               "control_b3" = "darkgreen",
               "beta_b1" = "tan3",
               "beta_b3" = "orangered2",
               "red_b1" = "lavenderblush3",
               "red_b3" = "darkred"),
       hline = 0, vline = 0,
       legendPosition = 'right',
       title = "PCA Scores Plot with Loadings",
       subtitle = "Log2 transformed data. 95% CI ellipses.",
       ellipse = TRUE,
       ellipseType = 't', # assumes multivariate
       ellipseLevel = 0.95,
       ellipseFill = TRUE,
       ellipseAlpha = 0.2,
       ellipseLineSize = 0,
       showLoadings = TRUE, ntopLoadings = 10)

biplot(p,
       lab = paste0(metadata_forPCAtools$subject),
       colby = 'treatment_period',
       colkey = c("control_b1" = "darkseagreen2",
               "control_b3" = "darkgreen",
               "beta_b1" = "tan3",
               "beta_b3" = "orangered2",
               "red_b1" = "lavenderblush3",
               "red_b3" = "darkred"),
       hline = 0, vline = 0,
       legendPosition = 'right',
       title = "PCA Scores Plot with Loadings",
       subtitle = "Log2 transformed data. 95% CI ellipses.",
       showLoadings = TRUE, ntopLoadings = 10)

Let’s explore a little more

How many PCs do we need to capture at least 80% variance?

which(cumsum(p$variance) > 80)[1]
## PC20 
##   20

This shows we’d need quite a few PCs to capture most of the variance.

Pairs plots

Here, we will look at separations for several components at once using pairs plots.

treatment_period

pairsplot(p,
    components = getComponents(p, c(1:10)),
    triangle = TRUE, trianglelabSize = 12,
    hline = 0, vline = 0,
    pointSize = 0.4,
    gridlines.major = FALSE, gridlines.minor = FALSE,
    colby = 'treatment_period',
    colkey = c("control_b1" = "darkseagreen2",
               "control_b3" = "darkgreen",
               "beta_b1" = "tan",
               "beta_b3" = "orangered2",
               "red_b1" = "lavenderblush3",
               "red_b3" = "darkred"),
    title = 'Pairs plot', plotaxes = FALSE,
    margingaps = unit(c(-0.01, -0.01, -0.01, -0.01), 'cm'))

period

pairsplot(p,
    components = getComponents(p, c(1:10)),
    triangle = TRUE, trianglelabSize = 12,
    hline = 0, vline = 0,
    pointSize = 0.4,
    gridlines.major = FALSE, gridlines.minor = FALSE,
    colby = 'period',
    colkey = c("b1" = "darkgray",
               "b3" = "pink"),
    title = 'Pairs plot', plotaxes = FALSE,
    margingaps = unit(c(-0.01, -0.01, -0.01, -0.01), 'cm'))

sex

Are there any obvious clusterings when colored by sex?

  pairsplot(p,
    components = getComponents(p, c(1:10)),
    triangle = TRUE, trianglelabSize = 12,
    hline = 0, vline = 0,
    pointSize = 0.4,
    gridlines.major = FALSE, gridlines.minor = FALSE,
    colby = 'sex', 
    colkey = c("M" = "red",
               "F" = "purple"),
    title = 'Pairs plot', plotaxes = FALSE,
    margingaps = unit(c(-0.01, -0.01, -0.01, -0.01), 'cm'))

Eigen corplots

This is a cool way to explore the correlations between the metadata and the PCs! I want to look at how the metavariables correlate with PCs that account for 80% variation in the dataset.

Again: How many PCs do we need to capture at least 80% variance?

which(cumsum(p$variance) > 80)[1]
## PC20 
##   20
  eigencorplot(p,
    components = getComponents(p, 1:which(cumsum(p$variance) > 80)[1]), # get components that account for 80% variance
    metavars = colnames(metadata_forPCAtools),
    col = c('darkblue', 'blue2', 'gray', 'red2', 'darkred'),
    cexCorval = 0.7,
    colCorval = 'white',
    fontCorval = 2,
    posLab = 'bottomleft',
    rotLabX = 45,
    posColKey = 'top',
    cexLabColKey = 1.5,
    scale = TRUE,
    main = 'PC1-15 metadata correlations',
    colFrame = 'white',
    plotRsquared = FALSE)

  eigencorplot(p,
    components = getComponents(p, 1:which(cumsum(p$variance) > 80)[1]),
    metavars = colnames(metadata_forPCAtools),
    col = c('white', 'cornsilk1', 'gold', 'forestgreen', 'darkgreen'),
    cexCorval = 1.2,
    fontCorval = 2,
    posLab = 'all',
    rotLabX = 45,
    scale = TRUE,
    main = bquote(Principal ~ component ~ Spearman ~ r^2 ~ metadata ~ correlates),
    plotRsquared = TRUE,
    corFUN = 'spearman',
    corUSE = 'pairwise.complete.obs',
    corMultipleTestCorrection = 'BH',
    signifSymbols = c('****', '***', '**', '*', ''),
    signifCutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1))

Univariate analysis

Wrangle data

# using the most convenient df to convert to tidy
df_for_stats <- Data_forMPCA %>%
  pivot_longer(21:ncol(.),
               names_to = "mz_rt",
               values_to = "rel_abund_log2") %>%
  unite("treatment_period", "treatment", "period", sep = "_", remove = FALSE) %>%
  mutate_at("treatment", as.factor)
# turn off sci notation outputs
options(scipen = 999)

Parametric tests

ANOVA across treatment timepoints

df_for_stats$treatment_period <- as.factor(df_for_stats$treatment_period)

trt_anova_output_df <- df_for_stats %>% 
  dplyr::select(subject, sample, treatment_period, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  anova_test(rel_abund_log2 ~ treatment_period, wid = subject,
             detailed = TRUE) %>%
  adjust_pvalue(method = "BH") %>%
  as.data.frame()


trt_anova_sig <- trt_anova_output_df %>%
  filter(p.adj < .05)

head(trt_anova_sig)
##             mz_rt           Effect   SSn    SSd DFn DFd     F         p p<.05
## 1  118.0864_0.597 treatment_period 1.548  4.336   5  64 4.571 0.0010000     *
## 2  1341.0272_6.83 treatment_period 6.978 16.964   5  64 5.265 0.0004120     *
## 3  1363.015_6.835 treatment_period 6.298 15.876   5  64 5.078 0.0005550     *
## 4 1365.0287_6.836 treatment_period 6.375 17.802   5  64 4.584 0.0010000     *
## 5 1531.6527_7.711 treatment_period 2.010  5.072   5  64 5.073 0.0005590     *
## 6 1585.2008_8.971 treatment_period 2.329  4.069   5  64 7.326 0.0000176     *
##     ges      p.adj
## 1 0.263 0.03772222
## 2 0.291 0.03496850
## 3 0.284 0.03772222
## 4 0.264 0.03772222
## 5 0.284 0.03772222
## 6 0.364 0.00298760
# how many significant features?
nrow(trt_anova_sig)
## [1] 54
trt_period_ANOVA_tukey <- df_for_stats %>% 
  dplyr::select(subject, sample, treatment_period, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  tukey_hsd(rel_abund_log2 ~ treatment_period, wid = subject)

trt_tukeyHSD_sig <- trt_period_ANOVA_tukey %>%
  filter(p.adj < .05)

t tests (unpaired and paired)

Paired control

# run paired t-tests for control intervention
ctrl_t.test_paired <- df_for_stats %>%
  filter(treatment == "control") %>%
 dplyr::select(subject, period, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ period, 
         paired = TRUE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
ctrl_t.test_paired_sig <- ctrl_t.test_paired %>%
  filter(p < 0.05)
kable(ctrl_t.test_paired_sig)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
1017.6873_3.095 rel_abund_log2 b1 b3 11 11 2.790664 10 0.0191000 *
1020.8931_11.508 rel_abund_log2 b1 b3 11 11 -3.297219 10 0.0080500 **
1026.8485_11.128 rel_abund_log2 b1 b3 11 11 -2.807671 10 0.0185000 *
1028.9572_12.137 rel_abund_log2 b1 b3 11 11 2.256003 10 0.0477000 *
1034.9093_11.511 rel_abund_log2 b1 b3 11 11 -2.930130 10 0.0150000 *
1034.911_11.594 rel_abund_log2 b1 b3 11 11 -3.354362 10 0.0073100 **
1039.6688_3.106 rel_abund_log2 b1 b3 11 11 3.105943 10 0.0111000 *
104.1071_0.537 rel_abund_log2 b1 b3 11 11 -3.874240 10 0.0030900 **
1041.9353_11.754 rel_abund_log2 b1 b3 11 11 -2.387721 10 0.0381000 *
1065.848_6.509 rel_abund_log2 b1 b3 11 11 -2.476544 10 0.0327000 *
1083.7892_6.33 rel_abund_log2 b1 b3 11 11 -2.626526 10 0.0253000 *
1151.3639_7.711 rel_abund_log2 b1 b3 11 11 3.766235 10 0.0036800 **
1151.8656_7.71 rel_abund_log2 b1 b3 11 11 7.499461 10 0.0000206 ****
118.0864_0.597 rel_abund_log2 b1 b3 11 11 -8.101096 10 0.0000105 ****
1192.8412_6.709 rel_abund_log2 b1 b3 11 11 -2.454356 10 0.0340000 *
1193.3431_6.71 rel_abund_log2 b1 b3 11 11 -2.969116 10 0.0141000 *
1193.9116_8.867 rel_abund_log2 b1 b3 11 11 2.399487 10 0.0373000 *
1204.4035_8.865 rel_abund_log2 b1 b3 11 11 3.000891 10 0.0133000 *
1204.9948_9.897 rel_abund_log2 b1 b3 11 11 2.434276 10 0.0352000 *
1205.4054_8.863 rel_abund_log2 b1 b3 11 11 3.643491 10 0.0045100 **
1205.4975_9.898 rel_abund_log2 b1 b3 11 11 3.151023 10 0.0103000 *
1211.3587_7.312 rel_abund_log2 b1 b3 11 11 2.477648 10 0.0327000 *
1216.4896_9.892 rel_abund_log2 b1 b3 11 11 2.927260 10 0.0151000 *
1226.4736_8.96 rel_abund_log2 b1 b3 11 11 -2.308458 10 0.0436000 *
1227.3893_7.956 rel_abund_log2 b1 b3 11 11 -2.532025 10 0.0298000 *
1227.7565_5.834 rel_abund_log2 b1 b3 11 11 -2.885803 10 0.0162000 *
1231.5117_9.905 rel_abund_log2 b1 b3 11 11 -2.335208 10 0.0417000 *
1237.8134_10.084 rel_abund_log2 b1 b3 11 11 2.496035 10 0.0317000 *
1242.5051_10.22 rel_abund_log2 b1 b3 11 11 3.050200 10 0.0122000 *
1242.5053_9.906 rel_abund_log2 b1 b3 11 11 -2.634050 10 0.0250000 *
1251.8293_10.466 rel_abund_log2 b1 b3 11 11 -2.704581 10 0.0221000 *
1259.7951_10.087 rel_abund_log2 b1 b3 11 11 6.820917 10 0.0000462 ****
1263.8289_10.349 rel_abund_log2 b1 b3 11 11 3.117356 10 0.0109000 *
1267.2019_12.079 rel_abund_log2 b1 b3 11 11 -2.236068 10 0.0493000 *
1272.1559_12.098 rel_abund_log2 b1 b3 11 11 -3.901447 10 0.0029500 **
1297.1947_10.828 rel_abund_log2 b1 b3 11 11 2.293987 10 0.0447000 *
1298.1727_12.089 rel_abund_log2 b1 b3 11 11 -3.151109 10 0.0103000 *
1298.1983_10.827 rel_abund_log2 b1 b3 11 11 4.440455 10 0.0012500 **
1299.1762_12.078 rel_abund_log2 b1 b3 11 11 -3.977143 10 0.0026100 **
1302.2067_12.075 rel_abund_log2 b1 b3 11 11 2.820547 10 0.0181000 *
1322.2624_10.832 rel_abund_log2 b1 b3 11 11 4.326599 10 0.0015000 **
1324.1888_12.056 rel_abund_log2 b1 b3 11 11 2.726371 10 0.0213000 *
1329.2228_12.335 rel_abund_log2 b1 b3 11 11 -2.942960 10 0.0147000 *
1339.0138_6.829 rel_abund_log2 b1 b3 11 11 2.468721 10 0.0332000 *
1341.0272_6.83 rel_abund_log2 b1 b3 11 11 3.998976 10 0.0025200 **
1347.1765_11.909 rel_abund_log2 b1 b3 11 11 -3.203456 10 0.0094400 **
1363.015_6.835 rel_abund_log2 b1 b3 11 11 4.108668 10 0.0021200 **
1365.0287_6.836 rel_abund_log2 b1 b3 11 11 7.045136 10 0.0000352 ****
1367.1442_11.655 rel_abund_log2 b1 b3 11 11 -2.290500 10 0.0450000 *
1369.1611_11.766 rel_abund_log2 b1 b3 11 11 -2.373578 10 0.0390000 *
1389.0311_6.813 rel_abund_log2 b1 b3 11 11 3.670679 10 0.0043100 **
1444.1182_6.522 rel_abund_log2 b1 b3 11 11 2.773396 10 0.0197000 *
1458.1721_6.714 rel_abund_log2 b1 b3 11 11 -2.865090 10 0.0168000 *
1470.0283_7.811 rel_abund_log2 b1 b3 11 11 -2.397023 10 0.0375000 *
1473.1717_7.517 rel_abund_log2 b1 b3 11 11 -2.362144 10 0.0398000 *
1475.1518_7.004 rel_abund_log2 b1 b3 11 11 -4.267897 10 0.0016400 **
1476.1552_7.005 rel_abund_log2 b1 b3 11 11 -4.931828 10 0.0005940 ***
1481.1402_7.792 rel_abund_log2 b1 b3 11 11 -2.857176 10 0.0170000 *
1482.1063_6.531 rel_abund_log2 b1 b3 11 11 3.656134 10 0.0044200 **
1486.0818_6.746 rel_abund_log2 b1 b3 11 11 2.377445 10 0.0388000 *
1487.1515_6.871 rel_abund_log2 b1 b3 11 11 -2.352899 10 0.0404000 *
1497.1674_7.486 rel_abund_log2 b1 b3 11 11 -2.974166 10 0.0139000 *
1504.14_8.066 rel_abund_log2 b1 b3 11 11 2.677861 10 0.0232000 *
1509.1328_6.475 rel_abund_log2 b1 b3 11 11 2.294904 10 0.0446000 *
1511.145_6.854 rel_abund_log2 b1 b3 11 11 -2.638300 10 0.0248000 *
1517.1985_7.759 rel_abund_log2 b1 b3 11 11 2.351366 10 0.0405000 *
1520.1651_7.717 rel_abund_log2 b1 b3 11 11 5.047982 10 0.0005010 ***
1522.0815_7.299 rel_abund_log2 b1 b3 11 11 2.273527 10 0.0463000 *
1523.1825_7.536 rel_abund_log2 b1 b3 11 11 -2.354399 10 0.0403000 *
1524.1325_6.944 rel_abund_log2 b1 b3 11 11 3.091632 10 0.0114000 *
1528.1659_7.665 rel_abund_log2 b1 b3 11 11 2.710389 10 0.0219000 *
1530.1768_7.745 rel_abund_log2 b1 b3 11 11 2.770219 10 0.0198000 *
1531.1683_7.726 rel_abund_log2 b1 b3 11 11 2.528654 10 0.0299000 *
1531.181_7.771 rel_abund_log2 b1 b3 11 11 3.118148 10 0.0109000 *
1531.2124_8.09 rel_abund_log2 b1 b3 11 11 -5.631046 10 0.0002180 ***
1531.6527_7.711 rel_abund_log2 b1 b3 11 11 5.681205 10 0.0002040 ***
1532.1582_7.713 rel_abund_log2 b1 b3 11 11 4.160777 10 0.0019500 **
1535.1521_6.713 rel_abund_log2 b1 b3 11 11 -3.478310 10 0.0059400 **
1542.1448_7.703 rel_abund_log2 b1 b3 11 11 4.657994 10 0.0008970 ***
1542.645_7.698 rel_abund_log2 b1 b3 11 11 7.110448 10 0.0000325 ****
1543.1481_7.702 rel_abund_log2 b1 b3 11 11 3.306853 10 0.0079200 **
1543.2104_7.94 rel_abund_log2 b1 b3 11 11 -2.750715 10 0.0205000 *
1544.1549_7.686 rel_abund_log2 b1 b3 11 11 2.314713 10 0.0432000 *
1546.1749_7.78 rel_abund_log2 b1 b3 11 11 3.755782 10 0.0037500 **
1546.1772_8.02 rel_abund_log2 b1 b3 11 11 3.737425 10 0.0038600 **
1547.1793_7.789 rel_abund_log2 b1 b3 11 11 2.361596 10 0.0398000 *
1547.1803_7.856 rel_abund_log2 b1 b3 11 11 2.317510 10 0.0430000 *
1547.245_8.769 rel_abund_log2 b1 b3 11 11 2.606359 10 0.0262000 *
1548.1302_6.87 rel_abund_log2 b1 b3 11 11 2.439971 10 0.0349000 *
1548.6249_6.858 rel_abund_log2 b1 b3 11 11 -4.408658 10 0.0013200 **
1550.1462_7.021 rel_abund_log2 b1 b3 11 11 2.740372 10 0.0208000 *
1550.14_6.908 rel_abund_log2 b1 b3 11 11 3.143230 10 0.0105000 *
1553.1308_7.035 rel_abund_log2 b1 b3 11 11 -3.042733 10 0.0124000 *
1554.1833_7.701 rel_abund_log2 b1 b3 11 11 2.720627 10 0.0215000 *
1557.1328_6.71 rel_abund_log2 b1 b3 11 11 -3.039261 10 0.0125000 *
1558.1201_7.783 rel_abund_log2 b1 b3 11 11 -2.985060 10 0.0137000 *
1558.1357_6.713 rel_abund_log2 b1 b3 11 11 -3.291355 10 0.0081300 **
1560.0999_6.725 rel_abund_log2 b1 b3 11 11 3.098703 10 0.0113000 *
1562.1488_7.418 rel_abund_log2 b1 b3 11 11 -2.708787 10 0.0220000 *
1562.1493_7.418 rel_abund_log2 b1 b3 11 11 -3.050176 10 0.0122000 *
1563.1166_6.865 rel_abund_log2 b1 b3 11 11 2.610726 10 0.0260000 *
1563.1535_7.418 rel_abund_log2 b1 b3 11 11 -3.184553 10 0.0097400 **
1563.2185_8.966 rel_abund_log2 b1 b3 11 11 -2.733878 10 0.0211000 *
1565.1377_6.892 rel_abund_log2 b1 b3 11 11 2.421521 10 0.0360000 *
1570.1778_7.936 rel_abund_log2 b1 b3 11 11 2.381044 10 0.0385000 *
1572.1304_7.394 rel_abund_log2 b1 b3 11 11 -2.767814 10 0.0199000 *
1574.2638_8.923 rel_abund_log2 b1 b3 11 11 3.471699 10 0.0060000 **
1577.1237_6.867 rel_abund_log2 b1 b3 11 11 -2.437085 10 0.0350000 *
1577.6354_7.106 rel_abund_log2 b1 b3 11 11 3.015619 10 0.0130000 *
1580.1032_7.792 rel_abund_log2 b1 b3 11 11 -2.874781 10 0.0165000 *
1585.2008_8.971 rel_abund_log2 b1 b3 11 11 -2.920967 10 0.0153000 *
1586.2043_8.972 rel_abund_log2 b1 b3 11 11 -3.476796 10 0.0059500 **
1591.2114_7.764 rel_abund_log2 b1 b3 11 11 -2.903396 10 0.0157000 *
1592.2118_7.764 rel_abund_log2 b1 b3 11 11 -3.383741 10 0.0069600 **
1595.6827_8.019 rel_abund_log2 b1 b3 11 11 2.238139 10 0.0492000 *
1596.3093_9.895 rel_abund_log2 b1 b3 11 11 2.519878 10 0.0304000 *
1596.6247_6.715 rel_abund_log2 b1 b3 11 11 -2.776857 10 0.0196000 *
1597.1201_6.716 rel_abund_log2 b1 b3 11 11 -4.018448 10 0.0024400 **
1597.3131_9.894 rel_abund_log2 b1 b3 11 11 2.621334 10 0.0255000 *
1598.1451_7.197 rel_abund_log2 b1 b3 11 11 -5.554611 10 0.0002430 ***
1604.1937_7.739 rel_abund_log2 b1 b3 11 11 -3.230493 10 0.0090100 **
1606.677_8.009 rel_abund_log2 b1 b3 11 11 2.450950 10 0.0342000 *
1616.16_7.754 rel_abund_log2 b1 b3 11 11 -2.691308 10 0.0226000 *
162.1126_0.545 rel_abund_log2 b1 b3 11 11 -2.932879 10 0.0150000 *
1621.1991_7.959 rel_abund_log2 b1 b3 11 11 -3.630060 10 0.0046100 **
1621.2757_7.96 rel_abund_log2 b1 b3 11 11 -2.323910 10 0.0425000 *
1622.2784_7.959 rel_abund_log2 b1 b3 11 11 -3.131680 10 0.0107000 *
1623.3297_9.9 rel_abund_log2 b1 b3 11 11 3.244637 10 0.0088000 **
1624.3343_9.899 rel_abund_log2 b1 b3 11 11 2.393566 10 0.0377000 *
1624.3414_10.412 rel_abund_log2 b1 b3 11 11 -3.394402 10 0.0068400 **
1629.2009_7.725 rel_abund_log2 b1 b3 11 11 -3.251763 10 0.0086900 **
1631.1866_7.959 rel_abund_log2 b1 b3 11 11 -2.271844 10 0.0464000 *
1647.2105_8.001 rel_abund_log2 b1 b3 11 11 -2.333932 10 0.0418000 *
1648.3413_9.902 rel_abund_log2 b1 b3 11 11 -3.045530 10 0.0123000 *
1649.3444_10.225 rel_abund_log2 b1 b3 11 11 3.337395 10 0.0075200 **
1685.4637_11.522 rel_abund_log2 b1 b3 11 11 2.606833 10 0.0262000 *
1689.4913_11.681 rel_abund_log2 b1 b3 11 11 2.555455 10 0.0286000 *
1693.3899_10.581 rel_abund_log2 b1 b3 11 11 2.289356 10 0.0451000 *
205.1221_0.621 rel_abund_log2 b1 b3 11 11 5.036155 10 0.0005090 ***
286.1437_1.13 rel_abund_log2 b1 b3 11 11 -3.184792 10 0.0097400 **
293.0984_0.628 rel_abund_log2 b1 b3 11 11 3.089539 10 0.0115000 *
308.1855_0.633 rel_abund_log2 b1 b3 11 11 -13.931210 10 0.0000001 ****
310.2012_0.633 rel_abund_log2 b1 b3 11 11 -2.698826 10 0.0224000 *
312.1597_1.413 rel_abund_log2 b1 b3 11 11 -7.879904 10 0.0000134 ****
331.0535_0.634 rel_abund_log2 b1 b3 11 11 3.365045 10 0.0071800 **
373.2483_1.147 rel_abund_log2 b1 b3 11 11 -3.117361 10 0.0109000 *
383.1533_0.931 rel_abund_log2 b1 b3 11 11 2.296307 10 0.0445000 *
398.3413_0.639 rel_abund_log2 b1 b3 11 11 -2.925002 10 0.0152000 *
424.3418_1.822 rel_abund_log2 b1 b3 11 11 -2.594059 10 0.0268000 *
426.3213_1.384 rel_abund_log2 b1 b3 11 11 2.974343 10 0.0139000 *
428.3732_2.759 rel_abund_log2 b1 b3 11 11 3.119610 10 0.0109000 *
464.1914_0.656 rel_abund_log2 b1 b3 11 11 -3.096723 10 0.0113000 *
480.3446_3.381 rel_abund_log2 b1 b3 11 11 -2.772086 10 0.0197000 *
482.3601_3.403 rel_abund_log2 b1 b3 11 11 -2.232306 10 0.0496000 *
502.2902_3.355 rel_abund_log2 b1 b3 11 11 2.782971 10 0.0194000 *
518.4564_5.944 rel_abund_log2 b1 b3 11 11 -4.686718 10 0.0008590 ***
521.4196_4.236 rel_abund_log2 b1 b3 11 11 2.290164 10 0.0450000 *
522.3564_3.24 rel_abund_log2 b1 b3 11 11 2.561755 10 0.0283000 *
526.2644_1.714 rel_abund_log2 b1 b3 11 11 -6.125405 10 0.0001120 ***
536.437_10.971 rel_abund_log2 b1 b3 11 11 13.947401 10 0.0000001 ****
536.437_11.201 rel_abund_log2 b1 b3 11 11 3.880596 10 0.0030600 **
538.3859_4.051 rel_abund_log2 b1 b3 11 11 -3.764525 10 0.0036900 **
542.3237_2.234 rel_abund_log2 b1 b3 11 11 2.344564 10 0.0410000 *
544.3374_3.238 rel_abund_log2 b1 b3 11 11 3.485266 10 0.0058700 **
552.4018_4.301 rel_abund_log2 b1 b3 11 11 2.556762 10 0.0285000 *
568.4266_4.64 rel_abund_log2 b1 b3 11 11 -3.679443 10 0.0042500 **
577.5185_8.358 rel_abund_log2 b1 b3 11 11 4.566190 10 0.0010300 **
593.4757_4.54 rel_abund_log2 b1 b3 11 11 6.666969 10 0.0000559 ****
593.4762_4.644 rel_abund_log2 b1 b3 11 11 3.776202 10 0.0036200 **
593.4768_4.312 rel_abund_log2 b1 b3 11 11 3.861204 10 0.0031500 **
595.4929_4.645 rel_abund_log2 b1 b3 11 11 14.235717 10 0.0000001 ****
596.4154_4.906 rel_abund_log2 b1 b3 11 11 -7.086453 10 0.0000335 ****
597.5086_5.242 rel_abund_log2 b1 b3 11 11 4.854831 10 0.0006670 ***
602.5849_10.522 rel_abund_log2 b1 b3 11 11 2.292973 10 0.0448000 *
603.2923_2.783 rel_abund_log2 b1 b3 11 11 2.259576 10 0.0474000 *
610.431_5.16 rel_abund_log2 b1 b3 11 11 -2.740268 10 0.0208000 *
617.4748_4.643 rel_abund_log2 b1 b3 11 11 4.438551 10 0.0012600 **
619.4903_4.953 rel_abund_log2 b1 b3 11 11 9.332923 10 0.0000030 ****
622.6132_10.675 rel_abund_log2 b1 b3 11 11 3.892456 10 0.0030000 **
623.1355_0.614 rel_abund_log2 b1 b3 11 11 2.704836 10 0.0221000 *
634.5399_9.061 rel_abund_log2 b1 b3 11 11 -2.604696 10 0.0263000 *
634.54_8.941 rel_abund_log2 b1 b3 11 11 -2.417715 10 0.0362000 *
645.1222_0.627 rel_abund_log2 b1 b3 11 11 3.328483 10 0.0076400 **
650.6449_10.83 rel_abund_log2 b1 b3 11 11 3.864561 10 0.0031400 **
652.6596_10.839 rel_abund_log2 b1 b3 11 11 3.511019 10 0.0056200 **
661.5282_5.288 rel_abund_log2 b1 b3 11 11 -2.403092 10 0.0371000 *
664.5997_4.075 rel_abund_log2 b1 b3 11 11 -2.440161 10 0.0348000 *
682.5516_8.574 rel_abund_log2 b1 b3 11 11 -2.275984 10 0.0461000 *
691.5742_6.403 rel_abund_log2 b1 b3 11 11 -3.254538 10 0.0086500 **
692.5581_7.191 rel_abund_log2 b1 b3 11 11 -2.898210 10 0.0159000 *
692.6335_11.899 rel_abund_log2 b1 b3 11 11 -2.994384 10 0.0135000 *
693.6368_11.899 rel_abund_log2 b1 b3 11 11 -2.589768 10 0.0270000 *
705.5909_6.851 rel_abund_log2 b1 b3 11 11 -2.621539 10 0.0255000 *
714.6184_11.643 rel_abund_log2 b1 b3 11 11 -2.511412 10 0.0308000 *
715.5745_6.252 rel_abund_log2 b1 b3 11 11 -2.448506 10 0.0343000 *
717.5903_6.828 rel_abund_log2 b1 b3 11 11 -3.294410 10 0.0080900 **
717.5903_7.018 rel_abund_log2 b1 b3 11 11 -4.808502 10 0.0007140 ***
718.5742_8.138 rel_abund_log2 b1 b3 11 11 -2.660488 10 0.0239000 *
718.5934_7.015 rel_abund_log2 b1 b3 11 11 -4.251334 10 0.0016900 **
719.5732_11.65 rel_abund_log2 b1 b3 11 11 -2.352399 10 0.0405000 *
719.6006_7.392 rel_abund_log2 b1 b3 11 11 -5.923367 10 0.0001460 ***
724.5272_7.284 rel_abund_log2 b1 b3 11 11 2.623312 10 0.0255000 *
727.5745_6.067 rel_abund_log2 b1 b3 11 11 -4.444692 10 0.0012500 **
729.5912_6.714 rel_abund_log2 b1 b3 11 11 -3.055669 10 0.0121000 *
731.6047_7.112 rel_abund_log2 b1 b3 11 11 -2.493482 10 0.0318000 *
731.6073_7.511 rel_abund_log2 b1 b3 11 11 -3.013350 10 0.0130000 *
732.5542_6.723 rel_abund_log2 b1 b3 11 11 2.253349 10 0.0479000 *
732.589_8.53 rel_abund_log2 b1 b3 11 11 -2.807446 10 0.0186000 *
733.6215_7.929 rel_abund_log2 b1 b3 11 11 -2.723050 10 0.0214000 *
738.5064_6.603 rel_abund_log2 b1 b3 11 11 2.670328 10 0.0235000 *
740.5222_7.221 rel_abund_log2 b1 b3 11 11 2.822173 10 0.0181000 *
742.5718_8.28 rel_abund_log2 b1 b3 11 11 -4.024335 10 0.0024200 **
743.6054_7.227 rel_abund_log2 b1 b3 11 11 -4.783727 10 0.0007420 ***
745.6202_7.852 rel_abund_log2 b1 b3 11 11 -3.479042 10 0.0059300 **
745.6214_8.115 rel_abund_log2 b1 b3 11 11 -6.101679 10 0.0001150 ***
746.5685_9.239 rel_abund_log2 b1 b3 11 11 2.742176 10 0.0208000 *
749.5557_6.066 rel_abund_log2 b1 b3 11 11 -5.420586 10 0.0002930 ***
750.6771_10.977 rel_abund_log2 b1 b3 11 11 2.278371 10 0.0459000 *
751.5717_6.812 rel_abund_log2 b1 b3 11 11 -2.887073 10 0.0162000 *
755.6054_6.838 rel_abund_log2 b1 b3 11 11 -5.183933 10 0.0004110 ***
756.5512_7.537 rel_abund_log2 b1 b3 11 11 3.198349 10 0.0095200 **
757.6221_7.776 rel_abund_log2 b1 b3 11 11 -2.959948 10 0.0143000 *
759.1094_6.983 rel_abund_log2 b1 b3 11 11 2.648287 10 0.0244000 *
759.4259_6.982 rel_abund_log2 b1 b3 11 11 4.281369 10 0.0016100 **
759.6382_8.714 rel_abund_log2 b1 b3 11 11 2.288984 10 0.0451000 *
760.3659_6.98 rel_abund_log2 b1 b3 11 11 -2.589948 10 0.0270000 *
760.421_6.983 rel_abund_log2 b1 b3 11 11 2.554147 10 0.0287000 *
760.5329_6.983 rel_abund_log2 b1 b3 11 11 3.560542 10 0.0051800 **
760.5459_7.719 rel_abund_log2 b1 b3 11 11 2.958440 10 0.0143000 *
760.5883_7.719 rel_abund_log2 b1 b3 11 11 4.712476 10 0.0008260 ***
760.6287_6.982 rel_abund_log2 b1 b3 11 11 2.976224 10 0.0139000 *
760.9763_7.718 rel_abund_log2 b1 b3 11 11 3.502954 10 0.0057000 **
761.0061_6.983 rel_abund_log2 b1 b3 11 11 -4.238070 10 0.0017200 **
761.0763_7.717 rel_abund_log2 b1 b3 11 11 2.992336 10 0.0135000 *
761.1927_7.717 rel_abund_log2 b1 b3 11 11 3.539643 10 0.0053600 **
761.2595_7.716 rel_abund_log2 b1 b3 11 11 5.223183 10 0.0003880 ***
761.302_7.716 rel_abund_log2 b1 b3 11 11 5.360447 10 0.0003190 ***
761.3174_7.717 rel_abund_log2 b1 b3 11 11 5.078632 10 0.0004790 ***
761.329_7.717 rel_abund_log2 b1 b3 11 11 6.217180 10 0.0000992 ****
761.3681_7.718 rel_abund_log2 b1 b3 11 11 5.018328 10 0.0005230 ***
761.3781_7.717 rel_abund_log2 b1 b3 11 11 4.794810 10 0.0007290 ***
761.4062_7.717 rel_abund_log2 b1 b3 11 11 6.627743 10 0.0000587 ****
761.4141_7.718 rel_abund_log2 b1 b3 11 11 5.649868 10 0.0002120 ***
761.4437_7.717 rel_abund_log2 b1 b3 11 11 6.621500 10 0.0000592 ****
761.4545_7.719 rel_abund_log2 b1 b3 11 11 5.358206 10 0.0003200 ***
761.5191_7.716 rel_abund_log2 b1 b3 11 11 4.030493 10 0.0024000 **
762.5032_7.719 rel_abund_log2 b1 b3 11 11 3.259102 10 0.0085900 **
762.5038_7.219 rel_abund_log2 b1 b3 11 11 2.879223 10 0.0164000 *
762.5251_7.716 rel_abund_log2 b1 b3 11 11 3.259952 10 0.0085700 **
762.541_6.576 rel_abund_log2 b1 b3 11 11 3.495720 10 0.0057700 **
762.5433_7.717 rel_abund_log2 b1 b3 11 11 2.368750 10 0.0394000 *
762.6465_8.683 rel_abund_log2 b1 b3 11 11 2.350880 10 0.0406000 *
766.5356_8.411 rel_abund_log2 b1 b3 11 11 2.549588 10 0.0289000 *
766.5755_7.417 rel_abund_log2 b1 b3 11 11 -3.199563 10 0.0095000 **
768.551_7.206 rel_abund_log2 b1 b3 11 11 2.495888 10 0.0317000 *
768.5536_6.434 rel_abund_log2 b1 b3 11 11 -2.480081 10 0.0325000 *
771.5762_7.712 rel_abund_log2 b1 b3 11 11 4.255860 10 0.0016700 **
771.6366_8.357 rel_abund_log2 b1 b3 11 11 -3.578324 10 0.0050300 **
773.6516_9.025 rel_abund_log2 b1 b3 11 11 -3.329204 10 0.0076300 **
775.6661_9.814 rel_abund_log2 b1 b3 11 11 -3.508378 10 0.0056500 **
776.579_6.552 rel_abund_log2 b1 b3 11 11 2.626572 10 0.0253000 *
780.5549_6.325 rel_abund_log2 b1 b3 11 11 2.325567 10 0.0424000 *
780.5921_7.79 rel_abund_log2 b1 b3 11 11 -3.286691 10 0.0082000 **
781.6192_8.718 rel_abund_log2 b1 b3 11 11 2.601895 10 0.0264000 *
781.62_7.043 rel_abund_log2 b1 b3 11 11 -4.151504 10 0.0019800 **
783.431_6.876 rel_abund_log2 b1 b3 11 11 -2.269323 10 0.0466000 *
783.6368_7.847 rel_abund_log2 b1 b3 11 11 -5.106310 10 0.0004600 ***
784.3942_6.875 rel_abund_log2 b1 b3 11 11 -2.257312 10 0.0476000 *
784.5042_6.876 rel_abund_log2 b1 b3 11 11 -2.228794 10 0.0499000 *
784.6654_10.38 rel_abund_log2 b1 b3 11 11 4.009412 10 0.0024800 **
785.6536_8.747 rel_abund_log2 b1 b3 11 11 -3.185869 10 0.0097200 **
785.6542_8.953 rel_abund_log2 b1 b3 11 11 3.264839 10 0.0085000 **
786.998_8.053 rel_abund_log2 b1 b3 11 11 2.412384 10 0.0365000 *
787.6674_9.202 rel_abund_log2 b1 b3 11 11 -3.021612 10 0.0129000 *
787.6701_9.896 rel_abund_log2 b1 b3 11 11 3.748403 10 0.0037900 **
788.5563_7.415 rel_abund_log2 b1 b3 11 11 -2.899328 10 0.0159000 *
788.6177_8.867 rel_abund_log2 b1 b3 11 11 2.582580 10 0.0273000 *
790.5744_7.193 rel_abund_log2 b1 b3 11 11 -2.809908 10 0.0185000 *
791.5433_6.743 rel_abund_log2 b1 b3 11 11 2.659951 10 0.0239000 *
792.5531_6.261 rel_abund_log2 b1 b3 11 11 -2.688357 10 0.0228000 *
792.5893_7.058 rel_abund_log2 b1 b3 11 11 2.248018 10 0.0483000 *
796.5845_7.27 rel_abund_log2 b1 b3 11 11 -3.512298 10 0.0056100 **
796.5848_7.423 rel_abund_log2 b1 b3 11 11 -2.862426 10 0.0169000 *
796.621_8.383 rel_abund_log2 b1 b3 11 11 -2.653310 10 0.0242000 *
797.6383_8.603 rel_abund_log2 b1 b3 11 11 -4.600854 10 0.0009790 ***
797.6421_8.39 rel_abund_log2 b1 b3 11 11 -2.800757 10 0.0188000 *
798.6518_8.391 rel_abund_log2 b1 b3 11 11 -5.073527 10 0.0004820 ***
798.681_10.534 rel_abund_log2 b1 b3 11 11 -4.335600 10 0.0014800 **
799.6686_9.32 rel_abund_log2 b1 b3 11 11 -3.020639 10 0.0129000 *
799.6692_9.585 rel_abund_log2 b1 b3 11 11 -4.003415 10 0.0025000 **
800.5726_6.827 rel_abund_log2 b1 b3 11 11 3.403573 10 0.0067300 **
801.686_10.409 rel_abund_log2 b1 b3 11 11 -2.793656 10 0.0190000 *
802.5357_6.323 rel_abund_log2 b1 b3 11 11 2.295529 10 0.0446000 *
802.5717_7.81 rel_abund_log2 b1 b3 11 11 -3.456271 10 0.0061600 **
803.037_6.321 rel_abund_log2 b1 b3 11 11 2.425888 10 0.0357000 *
805.0108_3.238 rel_abund_log2 b1 b3 11 11 3.626300 10 0.0046400 **
805.6187_7.848 rel_abund_log2 b1 b3 11 11 -4.209535 10 0.0018000 **
805.6784_9.291 rel_abund_log2 b1 b3 11 11 2.656918 10 0.0240000 *
806.6235_6.835 rel_abund_log2 b1 b3 11 11 -2.473973 10 0.0329000 *
807.0682_7.274 rel_abund_log2 b1 b3 11 11 -2.439077 10 0.0349000 *
807.6349_8.948 rel_abund_log2 b1 b3 11 11 3.291612 10 0.0081300 **
807.6359_7.483 rel_abund_log2 b1 b3 11 11 -3.199096 10 0.0095100 **
808.6375_8.751 rel_abund_log2 b1 b3 11 11 -3.140074 10 0.0105000 *
809.6507_9.876 rel_abund_log2 b1 b3 11 11 3.694318 10 0.0041500 **
809.6525_8.065 rel_abund_log2 b1 b3 11 11 -4.376990 10 0.0013800 **
810.5988_8.865 rel_abund_log2 b1 b3 11 11 2.293539 10 0.0447000 *
810.6041_7.959 rel_abund_log2 b1 b3 11 11 -2.312996 10 0.0433000 *
810.6564_8.03 rel_abund_log2 b1 b3 11 11 -4.195689 10 0.0018400 **
811.2977_7.959 rel_abund_log2 b1 b3 11 11 -4.232538 10 0.0017400 **
811.3445_7.959 rel_abund_log2 b1 b3 11 11 -2.769423 10 0.0198000 *
811.4149_7.961 rel_abund_log2 b1 b3 11 11 -4.200459 10 0.0018300 **
811.5374_7.96 rel_abund_log2 b1 b3 11 11 -5.134960 10 0.0004410 ***
811.6292_7.819 rel_abund_log2 b1 b3 11 11 -2.652600 10 0.0242000 *
811.6703_8.961 rel_abund_log2 b1 b3 11 11 -2.860995 10 0.0169000 *
812.615_8.136 rel_abund_log2 b1 b3 11 11 2.307248 10 0.0437000 *
812.6971_10.626 rel_abund_log2 b1 b3 11 11 2.366738 10 0.0395000 *
813.6834_9.437 rel_abund_log2 b1 b3 11 11 -4.294580 10 0.0015700 **
813.6854_10.226 rel_abund_log2 b1 b3 11 11 2.982937 10 0.0137000 *
814.535_6.26 rel_abund_log2 b1 b3 11 11 -4.494118 10 0.0011500 **
814.6127_7.96 rel_abund_log2 b1 b3 11 11 -3.593260 10 0.0049000 **
815.7025_10.568 rel_abund_log2 b1 b3 11 11 3.543498 10 0.0053300 **
816.6467_9.969 rel_abund_log2 b1 b3 11 11 2.887736 10 0.0162000 *
817.7051_10.344 rel_abund_log2 b1 b3 11 11 -2.522684 10 0.0302000 *
818.5668_7.42 rel_abund_log2 b1 b3 11 11 -2.442891 10 0.0347000 *
818.6049_7.793 rel_abund_log2 b1 b3 11 11 -4.737023 10 0.0007960 ***
819.6577_6.728 rel_abund_log2 b1 b3 11 11 2.281530 10 0.0457000 *
820.5846_7.213 rel_abund_log2 b1 b3 11 11 -2.626086 10 0.0253000 *
820.6202_7.907 rel_abund_log2 b1 b3 11 11 -6.894889 10 0.0000422 ****
822.5994_7.509 rel_abund_log2 b1 b3 11 11 -2.824003 10 0.0180000 *
823.6664_10.409 rel_abund_log2 b1 b3 11 11 -3.399214 10 0.0067800 **
824.616_8.544 rel_abund_log2 b1 b3 11 11 -4.965452 10 0.0005650 ***
824.6527_9.167 rel_abund_log2 b1 b3 11 11 -3.411620 10 0.0066400 **
824.6537_9.596 rel_abund_log2 b1 b3 11 11 -2.426975 10 0.0356000 *
825.6241_9.886 rel_abund_log2 b1 b3 11 11 2.891676 10 0.0161000 *
825.6778_9.575 rel_abund_log2 b1 b3 11 11 -5.083266 10 0.0004760 ***
825.6815_9.335 rel_abund_log2 b1 b3 11 11 -8.902253 10 0.0000046 ****
825.682_9.561 rel_abund_log2 b1 b3 11 11 -3.640444 10 0.0045300 **
826.5348_5.993 rel_abund_log2 b1 b3 11 11 -3.550238 10 0.0052700 **
826.5716_8.868 rel_abund_log2 b1 b3 11 11 2.317315 10 0.0430000 *
827.6071_6.849 rel_abund_log2 b1 b3 11 11 -2.787202 10 0.0192000 *
827.663_8.483 rel_abund_log2 b1 b3 11 11 -2.240679 10 0.0489000 *
827.6998_10.277 rel_abund_log2 b1 b3 11 11 -4.529116 10 0.0010900 **
827.6999_10.502 rel_abund_log2 b1 b3 11 11 -5.432917 10 0.0002880 ***
828.702_10.497 rel_abund_log2 b1 b3 11 11 -3.287469 10 0.0081800 **
829.7155_10.657 rel_abund_log2 b1 b3 11 11 -3.604212 10 0.0048100 **
831.57_7.208 rel_abund_log2 b1 b3 11 11 -2.387458 10 0.0381000 *
831.6353_8.196 rel_abund_log2 b1 b3 11 11 -5.504651 10 0.0002600 ***
832.582_7.631 rel_abund_log2 b1 b3 11 11 -2.325999 10 0.0423000 *
833.6507_8.971 rel_abund_log2 b1 b3 11 11 -2.880051 10 0.0164000 *
834.5932_5.658 rel_abund_log2 b1 b3 11 11 -3.097365 10 0.0113000 *
834.5933_5.658 rel_abund_log2 b1 b3 11 11 -3.293658 10 0.0081000 **
834.6002_7.257 rel_abund_log2 b1 b3 11 11 -6.538562 10 0.0000657 ****
834.602_7.751 rel_abund_log2 b1 b3 11 11 -3.182630 10 0.0097800 **
835.655_7.749 rel_abund_log2 b1 b3 11 11 -3.122365 10 0.0108000 *
835.6664_10.22 rel_abund_log2 b1 b3 11 11 3.068750 10 0.0119000 *
835.6666_9.91 rel_abund_log2 b1 b3 11 11 -2.569816 10 0.0279000 *
837.6724_9.906 rel_abund_log2 b1 b3 11 11 -2.764084 10 0.0200000 *
837.6789_10.324 rel_abund_log2 b1 b3 11 11 -3.089231 10 0.0115000 *
837.6831_9.217 rel_abund_log2 b1 b3 11 11 -3.054443 10 0.0122000 *
838.6301_9.147 rel_abund_log2 b1 b3 11 11 2.964374 10 0.0142000 *
844.6193_8.384 rel_abund_log2 b1 b3 11 11 -2.477625 10 0.0327000 *
846.6352_8.854 rel_abund_log2 b1 b3 11 11 -3.679591 10 0.0042500 **
847.6893_7.716 rel_abund_log2 b1 b3 11 11 3.725516 10 0.0039400 **
848.6521_9.028 rel_abund_log2 b1 b3 11 11 -6.282026 10 0.0000912 ****
849.6682_6.746 rel_abund_log2 b1 b3 11 11 2.658591 10 0.0240000 *
851.6839_7.537 rel_abund_log2 b1 b3 11 11 2.769686 10 0.0198000 *
854.574_8.362 rel_abund_log2 b1 b3 11 11 2.500453 10 0.0314000 *
855.6216_6.322 rel_abund_log2 b1 b3 11 11 2.557677 10 0.0285000 *
856.5819_7.24 rel_abund_log2 b1 b3 11 11 -4.469703 10 0.0012000 **
856.5823_7.778 rel_abund_log2 b1 b3 11 11 -3.396172 10 0.0068100 **
858.5914_7.792 rel_abund_log2 b1 b3 11 11 -3.754446 10 0.0037600 **
858.5977_8.453 rel_abund_log2 b1 b3 11 11 -3.149130 10 0.0103000 *
858.5992_7.06 rel_abund_log2 b1 b3 11 11 -2.822393 10 0.0181000 *
859.53_8.35 rel_abund_log2 b1 b3 11 11 4.296554 10 0.0015700 **
860.4936_6.313 rel_abund_log2 b1 b3 11 11 3.811892 10 0.0034200 **
861.7048_7.713 rel_abund_log2 b1 b3 11 11 5.095519 10 0.0004670 ***
863.6838_8.874 rel_abund_log2 b1 b3 11 11 2.821197 10 0.0181000 *
863.6839_6.733 rel_abund_log2 b1 b3 11 11 2.536398 10 0.0295000 *
863.7092_11.343 rel_abund_log2 b1 b3 11 11 -2.606059 10 0.0262000 *
863.7199_8.448 rel_abund_log2 b1 b3 11 11 2.913824 10 0.0155000 *
868.7389_11.19 rel_abund_log2 b1 b3 11 11 -2.279421 10 0.0458000 *
870.5225_6.318 rel_abund_log2 b1 b3 11 11 3.323319 10 0.0077000 **
870.6336_9.039 rel_abund_log2 b1 b3 11 11 -4.506489 10 0.0011300 **
870.7558_11.296 rel_abund_log2 b1 b3 11 11 -2.521124 10 0.0303000 *
872.6526_8.477 rel_abund_log2 b1 b3 11 11 -2.811585 10 0.0184000 *
872.652_8.777 rel_abund_log2 b1 b3 11 11 -3.687152 10 0.0042000 **
872.7731_11.418 rel_abund_log2 b1 b3 11 11 -2.376073 10 0.0389000 *
874.6655_10.042 rel_abund_log2 b1 b3 11 11 -2.985573 10 0.0137000 *
875.7095_11.292 rel_abund_log2 b1 b3 11 11 -2.451841 10 0.0342000 *
876.6835_10.245 rel_abund_log2 b1 b3 11 11 -4.999232 10 0.0005380 ***
877.6374_9.86 rel_abund_log2 b1 b3 11 11 2.668621 10 0.0235000 *
877.7_7.713 rel_abund_log2 b1 b3 11 11 3.319495 10 0.0077500 **
878.7033_7.717 rel_abund_log2 b1 b3 11 11 3.679006 10 0.0042500 **
880.718_11.248 rel_abund_log2 b1 b3 11 11 -4.021233 10 0.0024300 **
883.6892_7.419 rel_abund_log2 b1 b3 11 11 -2.759815 10 0.0201000 *
884.7697_11.358 rel_abund_log2 b1 b3 11 11 -2.456251 10 0.0339000 *
887.7206_8.05 rel_abund_log2 b1 b3 11 11 2.288188 10 0.0452000 *
889.7358_8.865 rel_abund_log2 b1 b3 11 11 2.986168 10 0.0137000 *
891.7156_7.718 rel_abund_log2 b1 b3 11 11 4.878718 10 0.0006430 ***
891.7406_11.489 rel_abund_log2 b1 b3 11 11 -2.966121 10 0.0141000 *
894.7548_11.21 rel_abund_log2 b1 b3 11 11 -3.140741 10 0.0105000 *
896.5379_6.373 rel_abund_log2 b1 b3 11 11 -2.377184 10 0.0388000 *
896.7714_11.316 rel_abund_log2 b1 b3 11 11 -2.831107 10 0.0178000 *
897.7047_7.419 rel_abund_log2 b1 b3 11 11 -2.537577 10 0.0295000 *
898.7872_11.44 rel_abund_log2 b1 b3 11 11 -2.337460 10 0.0415000 *
899.7091_11.203 rel_abund_log2 b1 b3 11 11 -3.819009 10 0.0033800 **
900.6836_9.96 rel_abund_log2 b1 b3 11 11 -3.090495 10 0.0114000 *
901.7251_11.318 rel_abund_log2 b1 b3 11 11 -2.927174 10 0.0151000 *
902.5743_7.805 rel_abund_log2 b1 b3 11 11 -3.921663 10 0.0028600 **
902.7673_8.957 rel_abund_log2 b1 b3 11 11 2.516477 10 0.0306000 *
903.6531_9.918 rel_abund_log2 b1 b3 11 11 -2.632260 10 0.0251000 *
903.7406_11.457 rel_abund_log2 b1 b3 11 11 -2.810060 10 0.0185000 *
904.7835_9.894 rel_abund_log2 b1 b3 11 11 5.601563 10 0.0002270 ***
909.5461_8.55 rel_abund_log2 b1 b3 11 11 2.525515 10 0.0301000 *
912.8727_11.58 rel_abund_log2 b1 b3 11 11 2.774995 10 0.0196000 *
916.7378_11.078 rel_abund_log2 b1 b3 11 11 -2.575547 10 0.0276000 *
918.754_11.178 rel_abund_log2 b1 b3 11 11 -3.183675 10 0.0097600 **
918.7987_9.897 rel_abund_log2 b1 b3 11 11 2.246482 10 0.0485000 *
920.7705_11.302 rel_abund_log2 b1 b3 11 11 -3.875040 10 0.0030800 **
922.7862_11.386 rel_abund_log2 b1 b3 11 11 -3.230804 10 0.0090100 **
923.7092_11.174 rel_abund_log2 b1 b3 11 11 -3.209320 10 0.0093400 **
928.7831_8.964 rel_abund_log2 b1 b3 11 11 -2.606576 10 0.0262000 *
930.7988_10.228 rel_abund_log2 b1 b3 11 11 2.356292 10 0.0402000 *
931.7715_11.646 rel_abund_log2 b1 b3 11 11 -2.399047 10 0.0374000 *
938.8159_11.193 rel_abund_log2 b1 b3 11 11 -2.473442 10 0.0329000 *
941.7313_7.957 rel_abund_log2 b1 b3 11 11 -3.103900 10 0.0112000 *
942.7986_8.961 rel_abund_log2 b1 b3 11 11 -2.270771 10 0.0465000 *
942.849_11.418 rel_abund_log2 b1 b3 11 11 -2.936790 10 0.0149000 *
944.7698_11.221 rel_abund_log2 b1 b3 11 11 -2.279081 10 0.0459000 *
950.8156_11.512 rel_abund_log2 b1 b3 11 11 -2.548337 10 0.0289000 *
951.7153_7.77 rel_abund_log2 b1 b3 11 11 -4.999709 10 0.0005380 ***
963.8345_12.135 rel_abund_log2 b1 b3 11 11 2.847882 10 0.0173000 *
965.7308_7.761 rel_abund_log2 b1 b3 11 11 -3.565726 10 0.0051300 **
971.877_11.497 rel_abund_log2 b1 b3 11 11 -2.580789 10 0.0274000 *
972.8574_11.264 rel_abund_log2 b1 b3 11 11 3.466533 10 0.0060600 **
972.8_11.345 rel_abund_log2 b1 b3 11 11 -2.367070 10 0.0395000 *
993.7984_10.238 rel_abund_log2 b1 b3 11 11 -5.209554 10 0.0003960 ***
994.7158_9.773 rel_abund_log2 b1 b3 11 11 2.229862 10 0.0499000 *
# how many are significant?
nrow(ctrl_t.test_paired_sig)
## [1] 438
ANOVA overlap

Keep sig features in t-test that have a match in sig ANOVA

sig_overlap_ctrl_paired <- inner_join(ctrl_t.test_paired_sig,
                                   trt_tukeyHSD_sig,
                                   by = "mz_rt",
                                   suffix = c(".t-test", ".tukeys"))

Paired beta

# run paired t-tests for control intervention
beta_t.test_paired <- df_for_stats %>%
  filter(treatment == "beta") %>%
 dplyr::select(subject, period, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ period, 
         paired = TRUE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
beta_t.test_paired_sig <- beta_t.test_paired %>%
  filter(p < 0.05)
kable(beta_t.test_paired_sig)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
1002.658_3.079 rel_abund_log2 b1 b3 12 12 -2.907425 11 0.0143000 *
1014.9413_11.924 rel_abund_log2 b1 b3 12 12 2.850869 11 0.0158000 *
1017.6873_3.095 rel_abund_log2 b1 b3 12 12 2.490675 11 0.0300000 *
1028.9572_12.137 rel_abund_log2 b1 b3 12 12 3.196432 11 0.0085100 **
1034.9093_11.511 rel_abund_log2 b1 b3 12 12 -2.281384 11 0.0434000 *
1039.6688_3.106 rel_abund_log2 b1 b3 12 12 3.090821 11 0.0103000 *
1041.6842_3.059 rel_abund_log2 b1 b3 12 12 -2.372954 11 0.0370000 *
1041.9353_11.754 rel_abund_log2 b1 b3 12 12 -3.141742 11 0.0093800 **
1061.8543_10.506 rel_abund_log2 b1 b3 12 12 4.252810 11 0.0013600 **
1151.8656_7.71 rel_abund_log2 b1 b3 12 12 2.467303 11 0.0313000 *
116.0707_0.623 rel_abund_log2 b1 b3 12 12 3.044761 11 0.0112000 *
1163.3585_7.687 rel_abund_log2 b1 b3 12 12 3.087624 11 0.0103000 *
1169.3422_6.843 rel_abund_log2 b1 b3 12 12 -2.612715 11 0.0241000 *
118.0864_0.597 rel_abund_log2 b1 b3 12 12 -3.508925 11 0.0048900 **
1187.3609_7.137 rel_abund_log2 b1 b3 12 12 3.189925 11 0.0086100 **
1187.8642_7.137 rel_abund_log2 b1 b3 12 12 2.389894 11 0.0359000 *
1192.8412_6.709 rel_abund_log2 b1 b3 12 12 -2.791911 11 0.0175000 *
1193.9116_8.867 rel_abund_log2 b1 b3 12 12 2.545275 11 0.0272000 *
1198.856_7.141 rel_abund_log2 b1 b3 12 12 2.517719 11 0.0286000 *
1202.3827_8.089 rel_abund_log2 b1 b3 12 12 2.334710 11 0.0395000 *
1204.9038_8.864 rel_abund_log2 b1 b3 12 12 2.549782 11 0.0270000 *
1204.9948_9.897 rel_abund_log2 b1 b3 12 12 3.007036 11 0.0119000 *
1205.4054_8.863 rel_abund_log2 b1 b3 12 12 3.127086 11 0.0096300 **
1205.4975_9.898 rel_abund_log2 b1 b3 12 12 2.786117 11 0.0177000 *
1216.4896_9.892 rel_abund_log2 b1 b3 12 12 3.007214 11 0.0119000 *
1216.9911_9.896 rel_abund_log2 b1 b3 12 12 4.342452 11 0.0011700 **
1225.3783_7.964 rel_abund_log2 b1 b3 12 12 2.876849 11 0.0151000 *
1229.9108_8.397 rel_abund_log2 b1 b3 12 12 -3.226932 11 0.0080600 **
1229.9993_9.9 rel_abund_log2 b1 b3 12 12 -2.491862 11 0.0299000 *
1231.5117_9.905 rel_abund_log2 b1 b3 12 12 -3.287671 11 0.0072300 **
1241.4043_8.395 rel_abund_log2 b1 b3 12 12 -2.932053 11 0.0136000 *
1242.5051_10.22 rel_abund_log2 b1 b3 12 12 2.573750 11 0.0259000 *
1242.5053_9.906 rel_abund_log2 b1 b3 12 12 -3.280284 11 0.0073300 **
1250.8236_3.081 rel_abund_log2 b1 b3 12 12 -2.456499 11 0.0319000 *
1258.8122_3.08 rel_abund_log2 b1 b3 12 12 -2.365428 11 0.0375000 *
1259.7951_10.087 rel_abund_log2 b1 b3 12 12 2.532704 11 0.0278000 *
1263.8289_10.349 rel_abund_log2 b1 b3 12 12 6.183898 11 0.0000687 ****
1266.8482_10.583 rel_abund_log2 b1 b3 12 12 3.365921 11 0.0063000 **
1268.1254_11.807 rel_abund_log2 b1 b3 12 12 -4.534893 11 0.0008510 ***
1268.2053_12.079 rel_abund_log2 b1 b3 12 12 -2.466816 11 0.0313000 *
1281.8397_10.519 rel_abund_log2 b1 b3 12 12 2.821321 11 0.0166000 *
1289.1866_11.82 rel_abund_log2 b1 b3 12 12 -2.998637 11 0.0121000 *
1294.1419_11.81 rel_abund_log2 b1 b3 12 12 -2.602951 11 0.0246000 *
1297.1947_10.828 rel_abund_log2 b1 b3 12 12 3.787689 11 0.0030100 **
1298.1983_10.827 rel_abund_log2 b1 b3 12 12 6.342600 11 0.0000550 ****
1302.2067_12.075 rel_abund_log2 b1 b3 12 12 2.352610 11 0.0383000 *
1308.157_11.948 rel_abund_log2 b1 b3 12 12 -3.043360 11 0.0112000 *
1312.1724_11.668 rel_abund_log2 b1 b3 12 12 -2.539744 11 0.0275000 *
1316.1245_11.664 rel_abund_log2 b1 b3 12 12 -2.750386 11 0.0189000 *
1319.2346_12.075 rel_abund_log2 b1 b3 12 12 2.566574 11 0.0262000 *
1322.2624_10.832 rel_abund_log2 b1 b3 12 12 3.264459 11 0.0075400 **
1334.1724_11.947 rel_abund_log2 b1 b3 12 12 -3.458028 11 0.0053500 **
1339.2017_11.786 rel_abund_log2 b1 b3 12 12 -2.820542 11 0.0167000 *
1341.0272_6.83 rel_abund_log2 b1 b3 12 12 3.014374 11 0.0118000 *
1341.2177_11.895 rel_abund_log2 b1 b3 12 12 -3.642532 11 0.0038700 **
1342.2211_11.896 rel_abund_log2 b1 b3 12 12 -3.644123 11 0.0038600 **
1346.1728_11.908 rel_abund_log2 b1 b3 12 12 -3.642554 11 0.0038700 **
1347.1765_11.909 rel_abund_log2 b1 b3 12 12 -3.893544 11 0.0025000 **
1364.2059_11.753 rel_abund_log2 b1 b3 12 12 -3.924465 11 0.0023700 **
1365.0287_6.836 rel_abund_log2 b1 b3 12 12 4.739490 11 0.0006100 ***
1369.1611_11.766 rel_abund_log2 b1 b3 12 12 -3.238957 11 0.0078900 **
1389.0311_6.813 rel_abund_log2 b1 b3 12 12 2.572890 11 0.0259000 *
1447.1208_6.507 rel_abund_log2 b1 b3 12 12 -3.281292 11 0.0073200 **
1454.1867_9.904 rel_abund_log2 b1 b3 12 12 -2.668024 11 0.0219000 *
1454.1868_9.88 rel_abund_log2 b1 b3 12 12 -2.795578 11 0.0174000 *
1455.1905_9.914 rel_abund_log2 b1 b3 12 12 -2.656340 11 0.0223000 *
1470.0283_7.811 rel_abund_log2 b1 b3 12 12 -2.939774 11 0.0135000 *
1472.1218_6.472 rel_abund_log2 b1 b3 12 12 -2.692124 11 0.0209000 *
1473.1717_7.517 rel_abund_log2 b1 b3 12 12 -3.191936 11 0.0085800 **
1475.1518_7.004 rel_abund_log2 b1 b3 12 12 -4.310182 11 0.0012300 **
1476.1365_7.528 rel_abund_log2 b1 b3 12 12 -4.014291 11 0.0020400 **
1476.1552_7.005 rel_abund_log2 b1 b3 12 12 -4.317983 11 0.0012200 **
1478.1161_7.023 rel_abund_log2 b1 b3 12 12 -2.307626 11 0.0415000 *
1479.1185_7.024 rel_abund_log2 b1 b3 12 12 -5.825003 11 0.0001150 ***
1479.137_7.538 rel_abund_log2 b1 b3 12 12 -2.332142 11 0.0397000 *
1481.1402_7.792 rel_abund_log2 b1 b3 12 12 -2.999802 11 0.0121000 *
1482.1063_6.531 rel_abund_log2 b1 b3 12 12 -2.366914 11 0.0374000 *
1484.1047_7.781 rel_abund_log2 b1 b3 12 12 -2.550518 11 0.0270000 *
1487.1511_6.872 rel_abund_log2 b1 b3 12 12 -2.229099 11 0.0476000 *
1488.1014_8.407 rel_abund_log2 b1 b3 12 12 2.657595 11 0.0223000 *
1488.1552_6.873 rel_abund_log2 b1 b3 12 12 -2.877212 11 0.0150000 *
1496.1206_6.463 rel_abund_log2 b1 b3 12 12 -2.382403 11 0.0363000 *
1497.1674_7.486 rel_abund_log2 b1 b3 12 12 -4.021558 11 0.0020100 **
1500.0993_6.518 rel_abund_log2 b1 b3 12 12 -3.062807 11 0.0108000 *
1500.1349_7.508 rel_abund_log2 b1 b3 12 12 -5.358192 11 0.0002310 ***
1504.1822_7.513 rel_abund_log2 b1 b3 12 12 -2.275715 11 0.0439000 *
1506.1473_7.519 rel_abund_log2 b1 b3 12 12 -2.468064 11 0.0312000 *
1508.1474_7.516 rel_abund_log2 b1 b3 12 12 -3.918142 11 0.0024000 **
1509.1474_7.507 rel_abund_log2 b1 b3 12 12 -4.500309 11 0.0009010 ***
1510.1192_7.922 rel_abund_log2 b1 b3 12 12 -2.754458 11 0.0187000 *
1510.1552_7.549 rel_abund_log2 b1 b3 12 12 -2.933067 11 0.0136000 *
1511.123_7.922 rel_abund_log2 b1 b3 12 12 -4.690336 11 0.0006600 ***
1514.1517_7.514 rel_abund_log2 b1 b3 12 12 -3.459244 11 0.0053400 **
1518.2654_8.731 rel_abund_log2 b1 b3 12 12 2.673586 11 0.0217000 *
152.0706_0.642 rel_abund_log2 b1 b3 12 12 -2.316651 11 0.0408000 *
1520.1651_7.717 rel_abund_log2 b1 b3 12 12 3.093196 11 0.0102000 *
1524.1333_7.404 rel_abund_log2 b1 b3 12 12 -3.024948 11 0.0116000 *
1526.0908_8.976 rel_abund_log2 b1 b3 12 12 -3.585819 11 0.0042700 **
1526.1136_6.481 rel_abund_log2 b1 b3 12 12 -3.138942 11 0.0094300 **
1526.1519_7.532 rel_abund_log2 b1 b3 12 12 -2.610242 11 0.0242000 *
1527.094_8.977 rel_abund_log2 b1 b3 12 12 -4.278807 11 0.0013000 **
1531.181_7.771 rel_abund_log2 b1 b3 12 12 3.001248 11 0.0121000 *
1531.2124_8.09 rel_abund_log2 b1 b3 12 12 -4.380848 11 0.0011000 **
1532.1012_7.882 rel_abund_log2 b1 b3 12 12 -2.694609 11 0.0209000 *
1532.1582_7.713 rel_abund_log2 b1 b3 12 12 3.096079 11 0.0102000 *
1534.154_7.527 rel_abund_log2 b1 b3 12 12 -4.122997 11 0.0016900 **
1534.1768_8.083 rel_abund_log2 b1 b3 12 12 -2.484478 11 0.0303000 *
1535.1558_7.533 rel_abund_log2 b1 b3 12 12 -2.341287 11 0.0391000 *
1536.6252_6.856 rel_abund_log2 b1 b3 12 12 -2.949118 11 0.0132000 *
1537.1733_7.573 rel_abund_log2 b1 b3 12 12 -2.363906 11 0.0376000 *
1538.1147_6.455 rel_abund_log2 b1 b3 12 12 -2.299004 11 0.0421000 *
1538.1514_7.472 rel_abund_log2 b1 b3 12 12 -4.099077 11 0.0017600 **
1538.1799_7.62 rel_abund_log2 b1 b3 12 12 -2.515711 11 0.0287000 *
1540.1703_7.761 rel_abund_log2 b1 b3 12 12 -3.565141 11 0.0044300 **
1541.1773_7.535 rel_abund_log2 b1 b3 12 12 -3.263644 11 0.0075500 **
1542.1805_8.073 rel_abund_log2 b1 b3 12 12 -2.482580 11 0.0304000 *
1542.645_7.698 rel_abund_log2 b1 b3 12 12 2.320922 11 0.0405000 *
1543.2104_7.94 rel_abund_log2 b1 b3 12 12 -3.561288 11 0.0044600 **
1544.1542_7.691 rel_abund_log2 b1 b3 12 12 2.447667 11 0.0324000 *
1544.1549_7.686 rel_abund_log2 b1 b3 12 12 2.287555 11 0.0430000 *
1544.1615_7.508 rel_abund_log2 b1 b3 12 12 -2.691029 11 0.0210000 *
1546.1714_7.763 rel_abund_log2 b1 b3 12 12 2.713602 11 0.0202000 *
1546.1749_7.78 rel_abund_log2 b1 b3 12 12 3.126610 11 0.0096400 **
1547.1793_7.789 rel_abund_log2 b1 b3 12 12 2.479249 11 0.0306000 *
1547.1803_7.856 rel_abund_log2 b1 b3 12 12 2.804606 11 0.0171000 *
1547.1806_8.02 rel_abund_log2 b1 b3 12 12 2.279574 11 0.0436000 *
1548.0963_7.222 rel_abund_log2 b1 b3 12 12 -2.346615 11 0.0387000 *
1548.6599_7.695 rel_abund_log2 b1 b3 12 12 2.214510 11 0.0488000 *
1550.1138_6.449 rel_abund_log2 b1 b3 12 12 -5.303956 11 0.0002510 ***
1550.1483_7.401 rel_abund_log2 b1 b3 12 12 -4.549974 11 0.0008300 ***
1554.1833_7.701 rel_abund_log2 b1 b3 12 12 3.797293 11 0.0029600 **
1555.3432_11.744 rel_abund_log2 b1 b3 12 12 -2.618689 11 0.0239000 *
1556.1613_7.323 rel_abund_log2 b1 b3 12 12 -2.232542 11 0.0473000 *
1558.1201_7.783 rel_abund_log2 b1 b3 12 12 -2.746015 11 0.0190000 *
1558.1745_7.924 rel_abund_log2 b1 b3 12 12 -2.705676 11 0.0204000 *
1561.1392_7.955 rel_abund_log2 b1 b3 12 12 -2.561201 11 0.0265000 *
1562.1488_7.418 rel_abund_log2 b1 b3 12 12 -4.744829 11 0.0006050 ***
1562.1493_7.418 rel_abund_log2 b1 b3 12 12 -4.667058 11 0.0006860 ***
1563.1535_7.418 rel_abund_log2 b1 b3 12 12 -6.262429 11 0.0000615 ****
1563.2185_8.966 rel_abund_log2 b1 b3 12 12 -3.841539 11 0.0027400 **
1564.1347_6.888 rel_abund_log2 b1 b3 12 12 -2.322371 11 0.0404000 *
1564.1662_7.508 rel_abund_log2 b1 b3 12 12 -3.267267 11 0.0075000 **
1566.1816_7.932 rel_abund_log2 b1 b3 12 12 -3.755427 11 0.0031800 **
1567.1909_7.931 rel_abund_log2 b1 b3 12 12 -3.886102 11 0.0025400 **
1568.6597_7.736 rel_abund_log2 b1 b3 12 12 -2.516232 11 0.0287000 *
1572.1304_7.394 rel_abund_log2 b1 b3 12 12 -3.879070 11 0.0025700 **
1574.1454_7.378 rel_abund_log2 b1 b3 12 12 -2.879446 11 0.0150000 *
1574.2638_8.923 rel_abund_log2 b1 b3 12 12 5.033478 11 0.0003820 ***
1574.6139_6.862 rel_abund_log2 b1 b3 12 12 3.547225 11 0.0045700 **
1578.1434_7.057 rel_abund_log2 b1 b3 12 12 -2.315252 11 0.0409000 *
1578.178_7.924 rel_abund_log2 b1 b3 12 12 -4.339597 11 0.0011800 **
1579.649_7.139 rel_abund_log2 b1 b3 12 12 2.657987 11 0.0223000 *
1579.6508_7.286 rel_abund_log2 b1 b3 12 12 -2.458319 11 0.0318000 *
1580.1032_7.792 rel_abund_log2 b1 b3 12 12 -3.074112 11 0.0106000 *
1580.159_7.285 rel_abund_log2 b1 b3 12 12 -3.208273 11 0.0083300 **
1583.089_7.72 rel_abund_log2 b1 b3 12 12 2.469750 11 0.0311000 *
1583.178_7.489 rel_abund_log2 b1 b3 12 12 -2.505236 11 0.0292000 *
1584.1871_8.061 rel_abund_log2 b1 b3 12 12 2.629874 11 0.0234000 *
1585.2008_8.971 rel_abund_log2 b1 b3 12 12 -4.784666 11 0.0005670 ***
1586.2043_8.972 rel_abund_log2 b1 b3 12 12 -4.676389 11 0.0006760 ***
1589.2021_7.7 rel_abund_log2 b1 b3 12 12 2.258924 11 0.0452000 *
1590.143_7.137 rel_abund_log2 b1 b3 12 12 2.537882 11 0.0276000 *
1590.144_7.285 rel_abund_log2 b1 b3 12 12 -2.342018 11 0.0390000 *
1591.1476_7.288 rel_abund_log2 b1 b3 12 12 -2.285855 11 0.0431000 *
1591.1484_6.916 rel_abund_log2 b1 b3 12 12 -2.900142 11 0.0144000 *
1591.1826_7.956 rel_abund_log2 b1 b3 12 12 -4.174922 11 0.0015500 **
1591.2114_7.764 rel_abund_log2 b1 b3 12 12 -2.990003 11 0.0123000 *
1592.1591_7.656 rel_abund_log2 b1 b3 12 12 -2.222332 11 0.0482000 *
1592.5935_6.867 rel_abund_log2 b1 b3 12 12 -2.549150 11 0.0270000 *
1593.0936_6.87 rel_abund_log2 b1 b3 12 12 -2.317764 11 0.0407000 *
1593.594_6.87 rel_abund_log2 b1 b3 12 12 -2.429335 11 0.0334000 *
1594.0976_6.869 rel_abund_log2 b1 b3 12 12 -2.457502 11 0.0318000 *
1596.3093_9.895 rel_abund_log2 b1 b3 12 12 3.213292 11 0.0082600 **
1597.3131_9.894 rel_abund_log2 b1 b3 12 12 3.088396 11 0.0103000 *
1598.1451_7.197 rel_abund_log2 b1 b3 12 12 -2.980551 11 0.0125000 *
1604.1937_7.739 rel_abund_log2 b1 b3 12 12 -2.729686 11 0.0196000 *
1605.1979_7.674 rel_abund_log2 b1 b3 12 12 -3.537715 11 0.0046500 **
1609.235_8.392 rel_abund_log2 b1 b3 12 12 -3.127931 11 0.0096100 **
1610.32_9.892 rel_abund_log2 b1 b3 12 12 5.517444 11 0.0001810 ***
1611.1156_6.852 rel_abund_log2 b1 b3 12 12 -2.209389 11 0.0493000 *
1611.8348_9.901 rel_abund_log2 b1 b3 12 12 2.452773 11 0.0321000 *
1616.16_7.754 rel_abund_log2 b1 b3 12 12 -2.720610 11 0.0199000 *
1618.2939_8.956 rel_abund_log2 b1 b3 12 12 2.881607 11 0.0149000 *
1619.2973_8.957 rel_abund_log2 b1 b3 12 12 2.703208 11 0.0205000 *
1621.1991_7.959 rel_abund_log2 b1 b3 12 12 -2.994891 11 0.0122000 *
1621.2757_7.96 rel_abund_log2 b1 b3 12 12 -2.697107 11 0.0208000 *
1623.2097_7.994 rel_abund_log2 b1 b3 12 12 -2.504542 11 0.0293000 *
1624.3414_10.412 rel_abund_log2 b1 b3 12 12 -2.318307 11 0.0407000 *
1625.2172_8.052 rel_abund_log2 b1 b3 12 12 -2.371787 11 0.0370000 *
1631.6823_7.958 rel_abund_log2 b1 b3 12 12 -2.777338 11 0.0180000 *
1636.3352_9.901 rel_abund_log2 b1 b3 12 12 -2.307434 11 0.0415000 *
1637.3363_9.913 rel_abund_log2 b1 b3 12 12 -2.593149 11 0.0250000 *
1642.1751_7.953 rel_abund_log2 b1 b3 12 12 -2.851929 11 0.0157000 *
1646.2057_7.997 rel_abund_log2 b1 b3 12 12 -2.579937 11 0.0256000 *
1648.3413_9.902 rel_abund_log2 b1 b3 12 12 -2.622360 11 0.0237000 *
1649.3444_10.225 rel_abund_log2 b1 b3 12 12 4.626105 11 0.0007330 ***
1649.3448_9.904 rel_abund_log2 b1 b3 12 12 -3.976151 11 0.0021700 **
1677.4008_11.264 rel_abund_log2 b1 b3 12 12 -2.244614 11 0.0463000 *
1678.4082_11.291 rel_abund_log2 b1 b3 12 12 -2.572382 11 0.0259000 *
188.0707_0.633 rel_abund_log2 b1 b3 12 12 2.908822 11 0.0142000 *
205.1221_0.621 rel_abund_log2 b1 b3 12 12 3.428639 11 0.0056400 **
235.0925_0.646 rel_abund_log2 b1 b3 12 12 -4.941466 11 0.0004420 ***
247.1441_0.636 rel_abund_log2 b1 b3 12 12 2.727764 11 0.0197000 *
286.1437_1.13 rel_abund_log2 b1 b3 12 12 -5.875625 11 0.0001070 ***
286.2013_0.633 rel_abund_log2 b1 b3 12 12 -2.377728 11 0.0366000 *
308.1855_0.633 rel_abund_log2 b1 b3 12 12 -11.533175 11 0.0000002 ****
312.1597_1.413 rel_abund_log2 b1 b3 12 12 -7.704638 11 0.0000093 ****
316.2483_0.679 rel_abund_log2 b1 b3 12 12 3.066815 11 0.0107000 *
316.2608_0.679 rel_abund_log2 b1 b3 12 12 4.574642 11 0.0007970 ***
330.2637_0.689 rel_abund_log2 b1 b3 12 12 2.692511 11 0.0209000 *
331.0535_0.634 rel_abund_log2 b1 b3 12 12 2.255705 11 0.0454000 *
332.243_0.64 rel_abund_log2 b1 b3 12 12 3.333947 11 0.0066600 **
337.1048_1.268 rel_abund_log2 b1 b3 12 12 -2.540238 11 0.0275000 *
342.2638_0.69 rel_abund_log2 b1 b3 12 12 2.555970 11 0.0267000 *
344.2792_0.693 rel_abund_log2 b1 b3 12 12 2.622212 11 0.0237000 *
344.2793_0.927 rel_abund_log2 b1 b3 12 12 3.974884 11 0.0021800 **
370.3549_12.075 rel_abund_log2 b1 b3 12 12 -2.218826 11 0.0485000 *
373.2483_1.147 rel_abund_log2 b1 b3 12 12 -5.718780 11 0.0001340 ***
428.3732_2.759 rel_abund_log2 b1 b3 12 12 2.850698 11 0.0158000 *
438.2976_3.525 rel_abund_log2 b1 b3 12 12 -2.437815 11 0.0330000 *
464.1914_0.656 rel_abund_log2 b1 b3 12 12 -4.948715 11 0.0004370 ***
466.3289_4.123 rel_abund_log2 b1 b3 12 12 -4.152932 11 0.0016100 **
480.3082_3.357 rel_abund_log2 b1 b3 12 12 4.801752 11 0.0005520 ***
480.3446_3.381 rel_abund_log2 b1 b3 12 12 -2.568285 11 0.0261000 *
482.3238_2.701 rel_abund_log2 b1 b3 12 12 -3.979185 11 0.0021600 **
502.2902_3.355 rel_abund_log2 b1 b3 12 12 3.889509 11 0.0025200 **
510.3551_3.445 rel_abund_log2 b1 b3 12 12 -3.509764 11 0.0048900 **
518.322_3.062 rel_abund_log2 b1 b3 12 12 2.460280 11 0.0317000 *
518.4564_5.944 rel_abund_log2 b1 b3 12 12 -2.496145 11 0.0297000 *
522.3564_3.24 rel_abund_log2 b1 b3 12 12 3.468783 11 0.0052500 **
526.2644_1.714 rel_abund_log2 b1 b3 12 12 -9.706981 11 0.0000010 ****
534.2952_3.067 rel_abund_log2 b1 b3 12 12 2.237649 11 0.0469000 *
536.437_10.971 rel_abund_log2 b1 b3 12 12 7.534995 11 0.0000115 ****
536.437_11.201 rel_abund_log2 b1 b3 12 12 -10.744586 11 0.0000004 ****
538.3859_4.051 rel_abund_log2 b1 b3 12 12 -4.109516 11 0.0017300 **
544.3374_3.238 rel_abund_log2 b1 b3 12 12 3.214357 11 0.0082400 **
550.3862_3.859 rel_abund_log2 b1 b3 12 12 2.347689 11 0.0386000 *
552.4018_4.301 rel_abund_log2 b1 b3 12 12 2.639037 11 0.0230000 *
563.4268_4.262 rel_abund_log2 b1 b3 12 12 2.695471 11 0.0208000 *
563.4273_4.415 rel_abund_log2 b1 b3 12 12 3.662361 11 0.0037400 **
577.5185_8.358 rel_abund_log2 b1 b3 12 12 4.649623 11 0.0007060 ***
593.4757_4.54 rel_abund_log2 b1 b3 12 12 5.662733 11 0.0001460 ***
593.4762_4.644 rel_abund_log2 b1 b3 12 12 5.087222 11 0.0003510 ***
593.4768_4.312 rel_abund_log2 b1 b3 12 12 2.871921 11 0.0152000 *
595.4929_4.645 rel_abund_log2 b1 b3 12 12 5.671726 11 0.0001440 ***
596.4154_4.906 rel_abund_log2 b1 b3 12 12 -9.941480 11 0.0000008 ****
597.5086_5.242 rel_abund_log2 b1 b3 12 12 2.764102 11 0.0184000 *
605.5497_9.629 rel_abund_log2 b1 b3 12 12 5.676363 11 0.0001430 ***
608.4637_5.649 rel_abund_log2 b1 b3 12 12 2.599679 11 0.0247000 *
610.431_5.16 rel_abund_log2 b1 b3 12 12 -5.115381 11 0.0003360 ***
617.4748_4.643 rel_abund_log2 b1 b3 12 12 3.692115 11 0.0035500 **
619.4903_4.953 rel_abund_log2 b1 b3 12 12 10.205135 11 0.0000006 ****
620.5974_10.522 rel_abund_log2 b1 b3 12 12 3.526577 11 0.0047400 **
622.6132_10.675 rel_abund_log2 b1 b3 12 12 3.309903 11 0.0069500 **
629.1522_0.633 rel_abund_log2 b1 b3 12 12 2.743936 11 0.0191000 *
634.5399_9.061 rel_abund_log2 b1 b3 12 12 -2.845417 11 0.0159000 *
634.54_8.941 rel_abund_log2 b1 b3 12 12 -4.213168 11 0.0014500 **
642.6107_12.077 rel_abund_log2 b1 b3 12 12 -2.949128 11 0.0132000 *
643.38_0.69 rel_abund_log2 b1 b3 12 12 -3.215580 11 0.0082200 **
650.6449_10.83 rel_abund_log2 b1 b3 12 12 4.716463 11 0.0006330 ***
652.6596_10.839 rel_abund_log2 b1 b3 12 12 4.249561 11 0.0013700 **
661.5282_5.288 rel_abund_log2 b1 b3 12 12 -3.580737 11 0.0043100 **
664.6011_11.668 rel_abund_log2 b1 b3 12 12 -3.993949 11 0.0021100 **
672.3751_3.941 rel_abund_log2 b1 b3 12 12 2.692089 11 0.0210000 *
673.5278_5.092 rel_abund_log2 b1 b3 12 12 -2.395664 11 0.0355000 *
673.5905_11.756 rel_abund_log2 b1 b3 12 12 -3.864084 11 0.0026300 **
677.5582_5.973 rel_abund_log2 b1 b3 12 12 -3.691172 11 0.0035600 **
677.5586_5.973 rel_abund_log2 b1 b3 12 12 -3.468487 11 0.0052500 **
690.6188_11.754 rel_abund_log2 b1 b3 12 12 -4.145889 11 0.0016300 **
691.5742_6.403 rel_abund_log2 b1 b3 12 12 -3.237647 11 0.0079100 **
692.5581_7.191 rel_abund_log2 b1 b3 12 12 -2.368246 11 0.0373000 *
692.6335_11.899 rel_abund_log2 b1 b3 12 12 -4.359966 11 0.0011400 **
693.6368_11.899 rel_abund_log2 b1 b3 12 12 -4.471562 11 0.0009440 ***
695.5093_5.094 rel_abund_log2 b1 b3 12 12 -2.729085 11 0.0196000 *
695.5729_11.772 rel_abund_log2 b1 b3 12 12 -3.680719 11 0.0036200 **
700.5274_7.902 rel_abund_log2 b1 b3 12 12 -3.566365 11 0.0044200 **
717.5903_6.828 rel_abund_log2 b1 b3 12 12 -3.320846 11 0.0068200 **
717.5903_7.018 rel_abund_log2 b1 b3 12 12 -4.789410 11 0.0005630 ***
718.5742_8.138 rel_abund_log2 b1 b3 12 12 -2.892058 11 0.0147000 *
718.5934_7.015 rel_abund_log2 b1 b3 12 12 -4.085874 11 0.0018000 **
719.6006_7.392 rel_abund_log2 b1 b3 12 12 -3.116536 11 0.0098100 **
720.5532_7.039 rel_abund_log2 b1 b3 12 12 -3.420449 11 0.0057200 **
721.5835_6.066 rel_abund_log2 b1 b3 12 12 -2.359152 11 0.0379000 *
721.5846_6.067 rel_abund_log2 b1 b3 12 12 -3.592012 11 0.0042300 **
724.5277_7.806 rel_abund_log2 b1 b3 12 12 -3.031028 11 0.0114000 *
726.5428_8.237 rel_abund_log2 b1 b3 12 12 -6.335314 11 0.0000556 ****
727.5745_6.067 rel_abund_log2 b1 b3 12 12 -2.898839 11 0.0145000 *
728.5588_9.081 rel_abund_log2 b1 b3 12 12 -2.677997 11 0.0215000 *
732.589_8.53 rel_abund_log2 b1 b3 12 12 -5.553212 11 0.0001720 ***
733.6212_7.929 rel_abund_log2 b1 b3 12 12 -3.021619 11 0.0116000 *
733.6215_7.929 rel_abund_log2 b1 b3 12 12 -3.426096 11 0.0056600 **
738.543_8.181 rel_abund_log2 b1 b3 12 12 -4.159909 11 0.0015900 **
740.5626_6.841 rel_abund_log2 b1 b3 12 12 -2.392254 11 0.0357000 *
740.5662_6.833 rel_abund_log2 b1 b3 12 12 -3.412049 11 0.0058000 **
742.5377_7.462 rel_abund_log2 b1 b3 12 12 2.323889 11 0.0403000 *
742.5718_8.28 rel_abund_log2 b1 b3 12 12 -4.627766 11 0.0007310 ***
742.5753_7.523 rel_abund_log2 b1 b3 12 12 -3.791593 11 0.0029900 **
743.6054_7.227 rel_abund_log2 b1 b3 12 12 -4.501344 11 0.0008990 ***
744.5538_6.51 rel_abund_log2 b1 b3 12 12 -2.834486 11 0.0162000 *
745.6202_7.852 rel_abund_log2 b1 b3 12 12 -4.131288 11 0.0016700 **
745.6214_8.115 rel_abund_log2 b1 b3 12 12 -3.618958 11 0.0040300 **
746.5091_7.814 rel_abund_log2 b1 b3 12 12 -2.915875 11 0.0140000 *
746.5685_9.239 rel_abund_log2 b1 b3 12 12 4.731171 11 0.0006180 ***
746.6055_8.435 rel_abund_log2 b1 b3 12 12 2.295541 11 0.0424000 *
748.5258_8.233 rel_abund_log2 b1 b3 12 12 -4.230601 11 0.0014100 **
748.5844_7.89 rel_abund_log2 b1 b3 12 12 -2.820936 11 0.0166000 *
748.5844_8.099 rel_abund_log2 b1 b3 12 12 -2.443001 11 0.0326000 *
749.5557_6.066 rel_abund_log2 b1 b3 12 12 -2.862613 11 0.0154000 *
750.7353_10.695 rel_abund_log2 b1 b3 12 12 -2.258322 11 0.0452000 *
752.5592_8.969 rel_abund_log2 b1 b3 12 12 -2.583419 11 0.0254000 *
752.5594_8.973 rel_abund_log2 b1 b3 12 12 -4.162236 11 0.0015800 **
754.5373_6.002 rel_abund_log2 b1 b3 12 12 -2.531715 11 0.0279000 *
755.4833_5.662 rel_abund_log2 b1 b3 12 12 -3.759038 11 0.0031600 **
755.6054_6.838 rel_abund_log2 b1 b3 12 12 -3.565031 11 0.0044300 **
756.5904_7.889 rel_abund_log2 b1 b3 12 12 -4.104934 11 0.0017400 **
758.9871_6.983 rel_abund_log2 b1 b3 12 12 3.725629 11 0.0033500 **
759.0903_6.983 rel_abund_log2 b1 b3 12 12 2.428122 11 0.0335000 *
759.1221_6.983 rel_abund_log2 b1 b3 12 12 2.281666 11 0.0434000 *
759.6382_8.714 rel_abund_log2 b1 b3 12 12 2.723708 11 0.0198000 *
760.4052_6.983 rel_abund_log2 b1 b3 12 12 2.945009 11 0.0133000 *
760.5883_7.719 rel_abund_log2 b1 b3 12 12 3.494677 11 0.0050200 **
761.1927_7.717 rel_abund_log2 b1 b3 12 12 2.488159 11 0.0301000 *
761.2595_7.716 rel_abund_log2 b1 b3 12 12 2.589685 11 0.0252000 *
761.302_7.716 rel_abund_log2 b1 b3 12 12 2.769744 11 0.0182000 *
761.3174_7.717 rel_abund_log2 b1 b3 12 12 3.759162 11 0.0031600 **
761.329_7.717 rel_abund_log2 b1 b3 12 12 2.777150 11 0.0180000 *
761.3681_7.718 rel_abund_log2 b1 b3 12 12 3.246429 11 0.0077800 **
761.3781_7.717 rel_abund_log2 b1 b3 12 12 2.463379 11 0.0315000 *
761.4062_7.717 rel_abund_log2 b1 b3 12 12 2.577822 11 0.0257000 *
761.4545_7.719 rel_abund_log2 b1 b3 12 12 2.883713 11 0.0149000 *
761.5191_7.716 rel_abund_log2 b1 b3 12 12 2.840790 11 0.0161000 *
761.6526_9.142 rel_abund_log2 b1 b3 12 12 -2.341413 11 0.0391000 *
762.5032_7.719 rel_abund_log2 b1 b3 12 12 3.058724 11 0.0109000 *
762.5251_7.716 rel_abund_log2 b1 b3 12 12 2.502095 11 0.0294000 *
762.5433_7.717 rel_abund_log2 b1 b3 12 12 3.159319 11 0.0090900 **
764.5195_7.458 rel_abund_log2 b1 b3 12 12 3.488784 11 0.0050700 **
766.5755_7.417 rel_abund_log2 b1 b3 12 12 -4.948182 11 0.0004370 ***
768.5536_6.434 rel_abund_log2 b1 b3 12 12 -4.877241 11 0.0004890 ***
768.587_8.451 rel_abund_log2 b1 b3 12 12 3.669638 11 0.0036900 **
770.0615_7.009 rel_abund_log2 b1 b3 12 12 2.393102 11 0.0357000 *
770.5691_6.825 rel_abund_log2 b1 b3 12 12 -4.461206 11 0.0009610 ***
770.6056_8.664 rel_abund_log2 b1 b3 12 12 -3.449796 11 0.0054300 **
771.5762_7.712 rel_abund_log2 b1 b3 12 12 2.550190 11 0.0270000 *
771.6366_8.357 rel_abund_log2 b1 b3 12 12 -2.850766 11 0.0158000 *
772.5855_7.501 rel_abund_log2 b1 b3 12 12 -2.816455 11 0.0168000 *
772.6196_8.643 rel_abund_log2 b1 b3 12 12 5.454018 11 0.0002000 ***
773.6516_9.025 rel_abund_log2 b1 b3 12 12 -5.477147 11 0.0001930 ***
774.5401_8.626 rel_abund_log2 b1 b3 12 12 -2.651177 11 0.0225000 *
774.5404_8.982 rel_abund_log2 b1 b3 12 12 -3.436479 11 0.0055600 **
775.6384_6.825 rel_abund_log2 b1 b3 12 12 3.134161 11 0.0095100 **
775.6661_9.814 rel_abund_log2 b1 b3 12 12 -5.633065 11 0.0001530 ***
778.5376_5.842 rel_abund_log2 b1 b3 12 12 -2.247271 11 0.0461000 *
780.5519_6.84 rel_abund_log2 b1 b3 12 12 2.252107 11 0.0457000 *
780.5795_10.219 rel_abund_log2 b1 b3 12 12 -2.855147 11 0.0157000 *
780.5921_7.79 rel_abund_log2 b1 b3 12 12 -4.826367 11 0.0005300 ***
781.6192_8.718 rel_abund_log2 b1 b3 12 12 2.578271 11 0.0257000 *
781.62_7.043 rel_abund_log2 b1 b3 12 12 -3.769563 11 0.0031000 **
783.3522_6.877 rel_abund_log2 b1 b3 12 12 -2.555880 11 0.0267000 *
783.4174_6.877 rel_abund_log2 b1 b3 12 12 -2.422076 11 0.0339000 *
783.5024_6.875 rel_abund_log2 b1 b3 12 12 -2.262701 11 0.0449000 *
783.6349_9.156 rel_abund_log2 b1 b3 12 12 -2.240186 11 0.0467000 *
783.6368_7.847 rel_abund_log2 b1 b3 12 12 -4.044902 11 0.0019300 **
784.5879_7.141 rel_abund_log2 b1 b3 12 12 2.769828 11 0.0182000 *
784.5881_7.29 rel_abund_log2 b1 b3 12 12 -2.281226 11 0.0434000 *
784.6654_10.38 rel_abund_log2 b1 b3 12 12 6.297234 11 0.0000586 ****
785.452_7.291 rel_abund_log2 b1 b3 12 12 -2.370014 11 0.0372000 *
785.5792_6.874 rel_abund_log2 b1 b3 12 12 -2.419479 11 0.0340000 *
785.6536_8.747 rel_abund_log2 b1 b3 12 12 -3.288490 11 0.0072200 **
785.6542_8.953 rel_abund_log2 b1 b3 12 12 4.521950 11 0.0008690 ***
786.6508_7.289 rel_abund_log2 b1 b3 12 12 -2.405576 11 0.0349000 *
787.6674_9.202 rel_abund_log2 b1 b3 12 12 -5.894262 11 0.0001040 ***
787.6701_9.896 rel_abund_log2 b1 b3 12 12 3.541030 11 0.0046200 **
788.5563_7.415 rel_abund_log2 b1 b3 12 12 -3.337840 11 0.0066200 **
788.6177_8.867 rel_abund_log2 b1 b3 12 12 2.592324 11 0.0250000 *
789.0076_8.052 rel_abund_log2 b1 b3 12 12 -2.984137 11 0.0124000 *
790.5352_6.424 rel_abund_log2 b1 b3 12 12 -2.450170 11 0.0322000 *
790.5744_7.193 rel_abund_log2 b1 b3 12 12 -2.919270 11 0.0140000 *
792.5512_6.827 rel_abund_log2 b1 b3 12 12 -3.131721 11 0.0095500 **
792.5531_6.261 rel_abund_log2 b1 b3 12 12 -2.808658 11 0.0170000 *
792.5873_8.665 rel_abund_log2 b1 b3 12 12 -2.479650 11 0.0306000 *
792.5893_7.058 rel_abund_log2 b1 b3 12 12 2.285182 11 0.0431000 *
793.556_6.829 rel_abund_log2 b1 b3 12 12 -2.329566 11 0.0399000 *
794.0604_7.102 rel_abund_log2 b1 b3 12 12 2.287932 11 0.0429000 *
794.5862_7.544 rel_abund_log2 b1 b3 12 12 -3.071435 11 0.0106000 *
794.6054_8.214 rel_abund_log2 b1 b3 12 12 -2.235669 11 0.0471000 *
794.6057_8.544 rel_abund_log2 b1 b3 12 12 -2.364109 11 0.0375000 *
796.5222_9.007 rel_abund_log2 b1 b3 12 12 -3.128602 11 0.0096000 **
796.5247_6.843 rel_abund_log2 b1 b3 12 12 2.341802 11 0.0390000 *
796.5845_7.27 rel_abund_log2 b1 b3 12 12 -3.313980 11 0.0069000 **
796.5848_7.423 rel_abund_log2 b1 b3 12 12 -4.714368 11 0.0006350 ***
797.6383_8.603 rel_abund_log2 b1 b3 12 12 -2.253934 11 0.0456000 *
797.6421_8.39 rel_abund_log2 b1 b3 12 12 -4.407024 11 0.0010500 **
797.6453_8.401 rel_abund_log2 b1 b3 12 12 -3.383163 11 0.0061100 **
798.6003_7.83 rel_abund_log2 b1 b3 12 12 -4.985374 11 0.0004120 ***
798.635_8.894 rel_abund_log2 b1 b3 12 12 2.305605 11 0.0416000 *
798.6518_8.391 rel_abund_log2 b1 b3 12 12 -4.437323 11 0.0009990 ***
798.681_10.534 rel_abund_log2 b1 b3 12 12 -2.915145 11 0.0141000 *
799.6069_8.865 rel_abund_log2 b1 b3 12 12 2.780380 11 0.0179000 *
799.6686_9.32 rel_abund_log2 b1 b3 12 12 -4.367844 11 0.0011200 **
800.6163_8.637 rel_abund_log2 b1 b3 12 12 -2.975289 11 0.0126000 *
800.616_8.426 rel_abund_log2 b1 b3 12 12 -2.496872 11 0.0297000 *
801.686_10.409 rel_abund_log2 b1 b3 12 12 -2.318134 11 0.0407000 *
802.5715_9.823 rel_abund_log2 b1 b3 12 12 -2.409173 11 0.0347000 *
802.5716_10.204 rel_abund_log2 b1 b3 12 12 -2.503675 11 0.0293000 *
802.5717_7.81 rel_abund_log2 b1 b3 12 12 -2.983925 11 0.0124000 *
804.5937_7.544 rel_abund_log2 b1 b3 12 12 -2.852410 11 0.0157000 *
805.0108_3.238 rel_abund_log2 b1 b3 12 12 2.694286 11 0.0209000 *
805.6187_7.848 rel_abund_log2 b1 b3 12 12 -3.491854 11 0.0050400 **
806.5698_6.37 rel_abund_log2 b1 b3 12 12 -4.798193 11 0.0005550 ***
806.6235_6.835 rel_abund_log2 b1 b3 12 12 -2.375917 11 0.0368000 *
807.6349_8.948 rel_abund_log2 b1 b3 12 12 5.533365 11 0.0001770 ***
807.6359_7.483 rel_abund_log2 b1 b3 12 12 -2.802417 11 0.0172000 *
808.6375_8.751 rel_abund_log2 b1 b3 12 12 -5.062717 11 0.0003650 ***
809.6507_9.876 rel_abund_log2 b1 b3 12 12 4.451535 11 0.0009760 ***
809.6525_8.065 rel_abund_log2 b1 b3 12 12 -4.513772 11 0.0008810 ***
810.5875_6.727 rel_abund_log2 b1 b3 12 12 -2.646499 11 0.0227000 *
810.5988_8.865 rel_abund_log2 b1 b3 12 12 2.859012 11 0.0155000 *
810.6013_7.646 rel_abund_log2 b1 b3 12 12 -3.244974 11 0.0078000 **
810.6041_7.959 rel_abund_log2 b1 b3 12 12 -2.578837 11 0.0256000 *
810.6564_8.03 rel_abund_log2 b1 b3 12 12 -4.410515 11 0.0010400 **
810.6812_10.387 rel_abund_log2 b1 b3 12 12 -2.221920 11 0.0482000 *
811.0052_7.959 rel_abund_log2 b1 b3 12 12 -2.375343 11 0.0368000 *
811.2977_7.959 rel_abund_log2 b1 b3 12 12 -3.939843 11 0.0023100 **
811.3445_7.959 rel_abund_log2 b1 b3 12 12 -2.330306 11 0.0398000 *
811.6292_7.819 rel_abund_log2 b1 b3 12 12 -4.459812 11 0.0009630 ***
811.6598_8.009 rel_abund_log2 b1 b3 12 12 -2.694497 11 0.0209000 *
811.6703_8.961 rel_abund_log2 b1 b3 12 12 -2.739847 11 0.0192000 *
812.545_7.958 rel_abund_log2 b1 b3 12 12 -2.658052 11 0.0223000 *
812.5561_7.198 rel_abund_log2 b1 b3 12 12 -2.416942 11 0.0342000 *
812.615_8.136 rel_abund_log2 b1 b3 12 12 2.723360 11 0.0198000 *
812.6186_8.396 rel_abund_log2 b1 b3 12 12 -2.321182 11 0.0405000 *
812.6971_10.626 rel_abund_log2 b1 b3 12 12 2.745936 11 0.0190000 *
813.6106_7.959 rel_abund_log2 b1 b3 12 12 -2.439900 11 0.0328000 *
813.6834_9.437 rel_abund_log2 b1 b3 12 12 -8.260860 11 0.0000048 ****
813.6854_10.226 rel_abund_log2 b1 b3 12 12 4.605534 11 0.0007580 ***
813.6866_9.902 rel_abund_log2 b1 b3 12 12 -3.307537 11 0.0069800 **
814.6318_9.087 rel_abund_log2 b1 b3 12 12 -2.237745 11 0.0469000 *
815.5406_6.313 rel_abund_log2 b1 b3 12 12 -2.920939 11 0.0139000 *
815.6606_9.084 rel_abund_log2 b1 b3 12 12 -2.539585 11 0.0275000 *
815.7025_10.568 rel_abund_log2 b1 b3 12 12 4.078741 11 0.0018200 **
816.5873_8.216 rel_abund_log2 b1 b3 12 12 -3.281420 11 0.0073200 **
816.7069_11.125 rel_abund_log2 b1 b3 12 12 -2.221497 11 0.0482000 *
817.7051_10.344 rel_abund_log2 b1 b3 12 12 -5.759460 11 0.0001270 ***
818.5668_7.42 rel_abund_log2 b1 b3 12 12 -3.105735 11 0.0100000 **
818.6044_8.299 rel_abund_log2 b1 b3 12 12 -2.408189 11 0.0347000 *
819.5737_7.769 rel_abund_log2 b1 b3 12 12 -2.234054 11 0.0472000 *
820.5846_7.213 rel_abund_log2 b1 b3 12 12 -3.579088 11 0.0043300 **
820.6961_11.574 rel_abund_log2 b1 b3 12 12 -3.220326 11 0.0081500 **
821.5898_7.956 rel_abund_log2 b1 b3 12 12 -2.442463 11 0.0327000 *
822.5404_7.148 rel_abund_log2 b1 b3 12 12 2.833266 11 0.0163000 *
822.5994_7.509 rel_abund_log2 b1 b3 12 12 -3.516004 11 0.0048300 **
824.616_8.544 rel_abund_log2 b1 b3 12 12 -3.732345 11 0.0033100 **
824.6526_9.963 rel_abund_log2 b1 b3 12 12 2.305562 11 0.0416000 *
825.6241_9.886 rel_abund_log2 b1 b3 12 12 2.813073 11 0.0169000 *
825.6473_7.81 rel_abund_log2 b1 b3 12 12 -2.795024 11 0.0174000 *
825.6815_9.335 rel_abund_log2 b1 b3 12 12 -8.248568 11 0.0000049 ****
825.682_9.561 rel_abund_log2 b1 b3 12 12 -3.896459 11 0.0024900 **
827.663_8.483 rel_abund_log2 b1 b3 12 12 -4.566489 11 0.0008080 ***
827.6998_10.277 rel_abund_log2 b1 b3 12 12 -6.180185 11 0.0000691 ****
827.6999_10.389 rel_abund_log2 b1 b3 12 12 -3.387168 11 0.0060700 **
827.6999_10.502 rel_abund_log2 b1 b3 12 12 -4.084454 11 0.0018100 **
828.5511_6.373 rel_abund_log2 b1 b3 12 12 -4.255520 11 0.0013500 **
828.702_10.497 rel_abund_log2 b1 b3 12 12 -4.291898 11 0.0012700 **
829.6782_8.401 rel_abund_log2 b1 b3 12 12 -3.647517 11 0.0038400 **
829.6788_9.393 rel_abund_log2 b1 b3 12 12 -2.244055 11 0.0464000 *
829.7155_10.657 rel_abund_log2 b1 b3 12 12 -4.498199 11 0.0009040 ***
830.568_6.228 rel_abund_log2 b1 b3 12 12 -2.650116 11 0.0226000 *
831.6353_8.196 rel_abund_log2 b1 b3 12 12 -5.567245 11 0.0001680 ***
831.6573_8.408 rel_abund_log2 b1 b3 12 12 3.355279 11 0.0064200 **
831.694_9.318 rel_abund_log2 b1 b3 12 12 -2.990044 11 0.0123000 *
832.5817_7.451 rel_abund_log2 b1 b3 12 12 3.069581 11 0.0107000 *
832.582_7.631 rel_abund_log2 b1 b3 12 12 -5.256063 11 0.0002700 ***
832.7384_11.319 rel_abund_log2 b1 b3 12 12 -2.299725 11 0.0421000 *
833.6507_8.971 rel_abund_log2 b1 b3 12 12 -2.637073 11 0.0231000 *
834.5987_8.394 rel_abund_log2 b1 b3 12 12 -3.247121 11 0.0077700 **
834.6002_7.257 rel_abund_log2 b1 b3 12 12 -4.533074 11 0.0008540 ***
835.6566_8.968 rel_abund_log2 b1 b3 12 12 -2.562955 11 0.0264000 *
835.6663_8.407 rel_abund_log2 b1 b3 12 12 -2.903886 11 0.0143000 *
835.6664_10.22 rel_abund_log2 b1 b3 12 12 5.437028 11 0.0002050 ***
835.6666_9.91 rel_abund_log2 b1 b3 12 12 -3.738576 11 0.0032700 **
836.6136_9.086 rel_abund_log2 b1 b3 12 12 -2.461375 11 0.0316000 *
836.6141_8.438 rel_abund_log2 b1 b3 12 12 -2.271088 11 0.0442000 *
837.5477_8.363 rel_abund_log2 b1 b3 12 12 6.077289 11 0.0000799 ****
837.614_7.764 rel_abund_log2 b1 b3 12 12 -2.776988 11 0.0180000 *
837.6789_10.324 rel_abund_log2 b1 b3 12 12 -3.164589 11 0.0090100 **
837.6818_10.567 rel_abund_log2 b1 b3 12 12 2.477574 11 0.0307000 *
837.6831_9.217 rel_abund_log2 b1 b3 12 12 -4.910826 11 0.0004640 ***
838.6301_9.147 rel_abund_log2 b1 b3 12 12 3.159909 11 0.0090800 **
838.6321_8.779 rel_abund_log2 b1 b3 12 12 -2.703999 11 0.0205000 *
839.6989_10.178 rel_abund_log2 b1 b3 12 12 -3.027445 11 0.0115000 *
842.5663_7.213 rel_abund_log2 b1 b3 12 12 -3.157533 11 0.0091200 **
842.723_11.155 rel_abund_log2 b1 b3 12 12 -3.571412 11 0.0043800 **
844.7397_11.265 rel_abund_log2 b1 b3 12 12 -3.024480 11 0.0116000 *
847.6893_7.716 rel_abund_log2 b1 b3 12 12 2.688455 11 0.0211000 *
848.6521_9.028 rel_abund_log2 b1 b3 12 12 -6.444575 11 0.0000478 ****
849.6939_11.262 rel_abund_log2 b1 b3 12 12 -2.713895 11 0.0202000 *
850.5715_8.394 rel_abund_log2 b1 b3 12 12 -2.530458 11 0.0280000 *
851.64_9.902 rel_abund_log2 b1 b3 12 12 -3.264642 11 0.0075400 **
852.6843_10.599 rel_abund_log2 b1 b3 12 12 2.865604 11 0.0154000 *
853.6758_9.321 rel_abund_log2 b1 b3 12 12 -3.186738 11 0.0086600 **
853.6786_8.974 rel_abund_log2 b1 b3 12 12 -3.872336 11 0.0026000 **
853.6786_8.975 rel_abund_log2 b1 b3 12 12 -2.733762 11 0.0194000 *
854.574_8.362 rel_abund_log2 b1 b3 12 12 2.744565 11 0.0191000 *
856.5819_7.24 rel_abund_log2 b1 b3 12 12 -2.635507 11 0.0232000 *
856.5823_7.778 rel_abund_log2 b1 b3 12 12 -2.662913 11 0.0221000 *
858.5914_7.792 rel_abund_log2 b1 b3 12 12 -2.971030 11 0.0127000 *
858.5977_8.453 rel_abund_log2 b1 b3 12 12 -2.535463 11 0.0277000 *
858.5992_7.06 rel_abund_log2 b1 b3 12 12 -2.434204 11 0.0332000 *
858.7545_11.345 rel_abund_log2 b1 b3 12 12 -4.026376 11 0.0019900 **
859.53_8.35 rel_abund_log2 b1 b3 12 12 8.076764 11 0.0000060 ****
859.6891_7.519 rel_abund_log2 b1 b3 12 12 -2.565367 11 0.0263000 *
860.6131_9.152 rel_abund_log2 b1 b3 12 12 2.574059 11 0.0259000 *
860.6133_8.785 rel_abund_log2 b1 b3 12 12 -3.529482 11 0.0047200 **
861.7048_7.713 rel_abund_log2 b1 b3 12 12 2.431063 11 0.0333000 *
863.7199_8.448 rel_abund_log2 b1 b3 12 12 2.266135 11 0.0446000 *
865.5795_9.626 rel_abund_log2 b1 b3 12 12 7.369271 11 0.0000141 ****
868.7389_11.19 rel_abund_log2 b1 b3 12 12 -3.608625 11 0.0041100 **
870.6336_9.039 rel_abund_log2 b1 b3 12 12 -2.821599 11 0.0166000 *
870.7558_11.296 rel_abund_log2 b1 b3 12 12 -3.664656 11 0.0037200 **
871.6776_11.111 rel_abund_log2 b1 b3 12 12 -2.393305 11 0.0357000 *
871.6892_7.141 rel_abund_log2 b1 b3 12 12 2.817138 11 0.0168000 *
872.6526_8.477 rel_abund_log2 b1 b3 12 12 -2.430828 11 0.0334000 *
872.652_8.777 rel_abund_log2 b1 b3 12 12 -4.665764 11 0.0006870 ***
872.7324_11.418 rel_abund_log2 b1 b3 12 12 -3.066165 11 0.0107000 *
872.7731_11.418 rel_abund_log2 b1 b3 12 12 -3.210925 11 0.0082900 **
873.7045_7.52 rel_abund_log2 b1 b3 12 12 -4.350664 11 0.0011500 **
875.7095_11.292 rel_abund_log2 b1 b3 12 12 -4.358804 11 0.0011400 **
875.7207_8.87 rel_abund_log2 b1 b3 12 12 2.710166 11 0.0203000 *
876.5695_7.88 rel_abund_log2 b1 b3 12 12 5.251274 11 0.0002720 ***
876.6835_10.245 rel_abund_log2 b1 b3 12 12 -3.923586 11 0.0023800 **
877.6374_9.86 rel_abund_log2 b1 b3 12 12 3.355077 11 0.0064200 **
877.6374_9.988 rel_abund_log2 b1 b3 12 12 2.297251 11 0.0422000 *
877.7253_11.418 rel_abund_log2 b1 b3 12 12 2.829882 11 0.0164000 *
877.7_7.713 rel_abund_log2 b1 b3 12 12 3.139553 11 0.0094200 **
878.5852_8.857 rel_abund_log2 b1 b3 12 12 2.823743 11 0.0166000 *
880.718_11.248 rel_abund_log2 b1 b3 12 12 -3.720664 11 0.0033800 **
883.6892_7.419 rel_abund_log2 b1 b3 12 12 -5.011250 11 0.0003950 ***
883.6894_6.894 rel_abund_log2 b1 b3 12 12 -2.429346 11 0.0334000 *
884.7697_11.358 rel_abund_log2 b1 b3 12 12 -2.602529 11 0.0246000 *
886.7858_11.492 rel_abund_log2 b1 b3 12 12 -2.573929 11 0.0259000 *
887.7201_8.662 rel_abund_log2 b1 b3 12 12 -2.553891 11 0.0268000 *
889.6375_9.586 rel_abund_log2 b1 b3 12 12 -4.152710 11 0.0016100 **
889.7358_8.865 rel_abund_log2 b1 b3 12 12 3.622630 11 0.0040100 **
891.7156_7.718 rel_abund_log2 b1 b3 12 12 2.354040 11 0.0382000 *
893.7563_11.645 rel_abund_log2 b1 b3 12 12 -3.038812 11 0.0113000 *
894.7548_11.21 rel_abund_log2 b1 b3 12 12 -2.829323 11 0.0164000 *
896.5379_6.373 rel_abund_log2 b1 b3 12 12 -3.011363 11 0.0118000 *
896.7714_11.316 rel_abund_log2 b1 b3 12 12 -2.859154 11 0.0155000 *
897.7047_7.419 rel_abund_log2 b1 b3 12 12 -7.460648 11 0.0000126 ****
897.7049_6.893 rel_abund_log2 b1 b3 12 12 -2.303532 11 0.0418000 *
899.684_6.44 rel_abund_log2 b1 b3 12 12 -2.311324 11 0.0412000 *
899.7091_11.203 rel_abund_log2 b1 b3 12 12 -3.253770 11 0.0076800 **
899.7208_8.396 rel_abund_log2 b1 b3 12 12 -2.223400 11 0.0481000 *
901.6999_7.143 rel_abund_log2 b1 b3 12 12 2.770105 11 0.0182000 *
901.7251_11.318 rel_abund_log2 b1 b3 12 12 -2.593387 11 0.0250000 *
902.7673_8.957 rel_abund_log2 b1 b3 12 12 3.611847 11 0.0040800 **
902.8182_11.738 rel_abund_log2 b1 b3 12 12 5.192206 11 0.0002980 ***
903.6531_10.207 rel_abund_log2 b1 b3 12 12 3.061865 11 0.0108000 *
903.6531_9.918 rel_abund_log2 b1 b3 12 12 -3.246741 11 0.0077800 **
904.7835_9.894 rel_abund_log2 b1 b3 12 12 2.454560 11 0.0320000 *
904.8336_11.91 rel_abund_log2 b1 b3 12 12 4.348976 11 0.0011600 **
907.7722_11.767 rel_abund_log2 b1 b3 12 12 2.326090 11 0.0401000 *
911.7206_7.958 rel_abund_log2 b1 b3 12 12 -2.392166 11 0.0357000 *
912.8727_11.58 rel_abund_log2 b1 b3 12 12 3.321919 11 0.0068100 **
913.7362_8.395 rel_abund_log2 b1 b3 12 12 -2.229213 11 0.0476000 *
915.7154_7.143 rel_abund_log2 b1 b3 12 12 3.229691 11 0.0080200 **
918.754_11.178 rel_abund_log2 b1 b3 12 12 -2.684068 11 0.0213000 *
918.7987_9.897 rel_abund_log2 b1 b3 12 12 5.778028 11 0.0001230 ***
919.7465_8.87 rel_abund_log2 b1 b3 12 12 2.257752 11 0.0453000 *
923.684_6.374 rel_abund_log2 b1 b3 12 12 -3.239548 11 0.0078800 **
928.7831_8.964 rel_abund_log2 b1 b3 12 12 -2.273935 11 0.0440000 *
928.8306_11.753 rel_abund_log2 b1 b3 12 12 2.796540 11 0.0174000 *
930.7988_10.228 rel_abund_log2 b1 b3 12 12 4.972592 11 0.0004200 ***
930.7989_9.903 rel_abund_log2 b1 b3 12 12 -3.423251 11 0.0056900 **
930.8479_11.919 rel_abund_log2 b1 b3 12 12 3.937493 11 0.0023200 **
937.6995_6.371 rel_abund_log2 b1 b3 12 12 -3.661694 11 0.0037400 **
938.8159_11.193 rel_abund_log2 b1 b3 12 12 -3.235770 11 0.0079300 **
941.7308_7.633 rel_abund_log2 b1 b3 12 12 -2.566482 11 0.0262000 *
941.7313_7.957 rel_abund_log2 b1 b3 12 12 -2.581726 11 0.0255000 *
944.7698_11.221 rel_abund_log2 b1 b3 12 12 -2.783268 11 0.0178000 *
944.8145_9.903 rel_abund_log2 b1 b3 12 12 -3.091203 11 0.0103000 *
949.7248_11.221 rel_abund_log2 b1 b3 12 12 -2.836895 11 0.0162000 *
951.7153_7.77 rel_abund_log2 b1 b3 12 12 -2.851466 11 0.0158000 *
953.7558_11.474 rel_abund_log2 b1 b3 12 12 2.569263 11 0.0261000 *
955.7465_8.781 rel_abund_log2 b1 b3 12 12 -2.674839 11 0.0216000 *
963.8345_12.135 rel_abund_log2 b1 b3 12 12 2.398651 11 0.0353000 *
965.7308_7.761 rel_abund_log2 b1 b3 12 12 -2.844707 11 0.0159000 *
966.8463_11.305 rel_abund_log2 b1 b3 12 12 -2.715736 11 0.0201000 *
972.7339_9.773 rel_abund_log2 b1 b3 12 12 3.024516 11 0.0116000 *
974.75_10.504 rel_abund_log2 b1 b3 12 12 2.903641 11 0.0144000 *
984.86_11.28 rel_abund_log2 b1 b3 12 12 2.263426 11 0.0448000 *
993.7984_10.238 rel_abund_log2 b1 b3 12 12 -3.136536 11 0.0094700 **
# how many are significant?
nrow(beta_t.test_paired_sig)
## [1] 592
Remove BG diet
# let's grab both datasets for features sig in pre v post beta and pre v post control and combine them
fulljoin_t.test_betaANDctrl <- full_join(beta_t.test_paired_sig, ctrl_t.test_paired_sig,
                                        by = "mz_rt",
                                        suffix = c(".beta", ".ctrl"))

# number of features in combined list
nrow(fulljoin_t.test_betaANDctrl)
## [1] 778

Let’s try and remove features significant due to the background diet

sig_paired_beta_rmBG <- fulljoin_t.test_betaANDctrl %>%
  # add a column to account for direction
  mutate(sign = statistic.beta * statistic.ctrl) %>%
  # replace NAs in the sign column with 0
  mutate(sign = replace_na(sign, 0)) %>%
  # replace NAs in the statistic.ctrl column to 0
  mutate(statistic.ctrl = replace_na(statistic.ctrl, 0)) %>%
  # filter for columns that are either negative (means ctrl and tomato are going in opposite dir) or where the stat.ctrl col is 0 (so we don't remove features that are just not present in the sig control list)
  filter((sign < 0 | statistic.ctrl == 0))

# number of features without bg diet effect
nrow(sig_paired_beta_rmBG)
## [1] 342

How many BG-diet-related features did we remove from the list of significant beta features?

nrow(beta_t.test_paired_sig) - nrow(sig_paired_beta_rmBG)
## [1] 250
ANOVA overlap

Keep sig features in t-test that have a match in sig ANOVA. Let’s take our new feature list (background diet effect removed)

# select only features from paired list that have a match in ANOVA list
beta_sig_ANOVA_overlap_paired <- inner_join(sig_paired_beta_rmBG,
                                            trt_tukeyHSD_sig,
                                            by = "mz_rt",
                                            suffix = c(".t-test", ".tukeys"))

# features overlapping with sig ANOVA
unique(beta_sig_ANOVA_overlap_paired$mz_rt)
##  [1] "1341.2177_11.895" "1342.2211_11.896" "1479.1185_7.024"  "1526.0908_8.976" 
##  [5] "1527.094_8.977"   "1536.6252_6.856"  "1594.0976_6.869"  "1618.2939_8.956" 
##  [9] "1619.2973_8.957"  "1649.3448_9.904"  "286.2013_0.633"   "337.1048_1.268"  
## [13] "536.437_11.201"   "605.5497_9.629"   "608.4637_5.649"   "677.5582_5.973"  
## [17] "677.5586_5.973"   "726.5428_8.237"   "738.543_8.181"    "748.5258_8.233"  
## [21] "755.4833_5.662"   "759.0903_6.983"   "759.1221_6.983"   "774.5404_8.982"  
## [25] "796.5222_9.007"   "797.6453_8.401"   "811.6598_8.009"   "813.6866_9.902"  
## [29] "827.6999_10.389"  "835.6566_8.968"   "851.64_9.902"     "865.5795_9.626"  
## [33] "876.5695_7.88"    "878.5852_8.857"   "889.6375_9.586"   "903.6531_10.207" 
## [37] "907.7722_11.767"  "974.75_10.504"

Paired red

# run paired t-tests for control intervention
red_t.test_paired <- df_for_stats %>%
  filter(treatment == "red") %>%
 dplyr::select(subject, period, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ period, 
         paired = TRUE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
red_t.test_paired_sig <- red_t.test_paired %>%
  filter(p < 0.05)
kable(red_t.test_paired_sig)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
100.0757_0.629 rel_abund_log2 b1 b3 12 12 2.301791 11 0.0419000 *
1017.6873_3.095 rel_abund_log2 b1 b3 12 12 2.890974 11 0.0147000 *
1020.8931_11.508 rel_abund_log2 b1 b3 12 12 -2.210565 11 0.0492000 *
1022.9086_11.654 rel_abund_log2 b1 b3 12 12 -2.378913 11 0.0366000 *
1026.6606_3.098 rel_abund_log2 b1 b3 12 12 2.958742 11 0.0130000 *
1034.9093_11.511 rel_abund_log2 b1 b3 12 12 -2.505686 11 0.0292000 *
1036.925_11.654 rel_abund_log2 b1 b3 12 12 -5.164878 11 0.0003110 ***
1039.6688_3.106 rel_abund_log2 b1 b3 12 12 2.746647 11 0.0190000 *
1041.9353_11.754 rel_abund_log2 b1 b3 12 12 -3.390033 11 0.0060300 **
1128.671_2.722 rel_abund_log2 b1 b3 12 12 2.292666 11 0.0426000 *
1151.3639_7.711 rel_abund_log2 b1 b3 12 12 4.321264 11 0.0012100 **
1151.8656_7.71 rel_abund_log2 b1 b3 12 12 6.583845 11 0.0000395 ****
1172.8404_7.074 rel_abund_log2 b1 b3 12 12 2.445031 11 0.0325000 *
118.0864_0.597 rel_abund_log2 b1 b3 12 12 -7.527861 11 0.0000116 ****
1193.9116_8.867 rel_abund_log2 b1 b3 12 12 3.062703 11 0.0108000 *
1199.3591_7.285 rel_abund_log2 b1 b3 12 12 -2.356886 11 0.0380000 *
1204.4035_8.865 rel_abund_log2 b1 b3 12 12 3.421241 11 0.0057100 **
1204.9038_8.864 rel_abund_log2 b1 b3 12 12 2.555463 11 0.0267000 *
1204.9948_9.897 rel_abund_log2 b1 b3 12 12 2.437899 11 0.0329000 *
1205.4054_8.863 rel_abund_log2 b1 b3 12 12 2.845936 11 0.0159000 *
1205.4975_9.898 rel_abund_log2 b1 b3 12 12 2.587322 11 0.0253000 *
1216.4896_9.892 rel_abund_log2 b1 b3 12 12 3.225108 11 0.0080900 **
1216.9911_9.896 rel_abund_log2 b1 b3 12 12 2.553121 11 0.0268000 *
1226.887_7.956 rel_abund_log2 b1 b3 12 12 -2.962983 11 0.0129000 *
1231.5117_9.905 rel_abund_log2 b1 b3 12 12 -2.757467 11 0.0186000 *
1237.8134_10.084 rel_abund_log2 b1 b3 12 12 2.509555 11 0.0290000 *
1242.5051_10.22 rel_abund_log2 b1 b3 12 12 2.601340 11 0.0246000 *
1242.5053_9.906 rel_abund_log2 b1 b3 12 12 -3.062344 11 0.0108000 *
1260.0333_9.997 rel_abund_log2 b1 b3 12 12 -2.490798 11 0.0300000 *
1281.8397_10.519 rel_abund_log2 b1 b3 12 12 2.307834 11 0.0415000 *
1282.9156_6.311 rel_abund_log2 b1 b3 12 12 2.215555 11 0.0487000 *
1285.8106_10.085 rel_abund_log2 b1 b3 12 12 -3.294039 11 0.0071500 **
1298.1748_11.858 rel_abund_log2 b1 b3 12 12 -2.402860 11 0.0351000 *
1339.0138_6.829 rel_abund_log2 b1 b3 12 12 4.904815 11 0.0004680 ***
1341.0272_6.83 rel_abund_log2 b1 b3 12 12 5.333442 11 0.0002400 ***
1363.015_6.835 rel_abund_log2 b1 b3 12 12 4.607274 11 0.0007560 ***
1364.2059_11.753 rel_abund_log2 b1 b3 12 12 -2.219070 11 0.0484000 *
1365.0287_6.836 rel_abund_log2 b1 b3 12 12 5.621844 11 0.0001550 ***
1389.0311_6.813 rel_abund_log2 b1 b3 12 12 5.627634 11 0.0001540 ***
1424.1384_8.941 rel_abund_log2 b1 b3 12 12 -2.549831 11 0.0270000 *
1454.1867_9.904 rel_abund_log2 b1 b3 12 12 -4.676054 11 0.0006760 ***
1454.1868_9.88 rel_abund_log2 b1 b3 12 12 -4.604527 11 0.0007590 ***
1455.1905_9.914 rel_abund_log2 b1 b3 12 12 -3.161303 11 0.0090600 **
1473.1717_7.517 rel_abund_log2 b1 b3 12 12 -2.237906 11 0.0469000 *
1475.1518_7.004 rel_abund_log2 b1 b3 12 12 -3.334147 11 0.0066600 **
1476.1365_7.528 rel_abund_log2 b1 b3 12 12 -2.332112 11 0.0397000 *
1479.137_7.538 rel_abund_log2 b1 b3 12 12 -2.421904 11 0.0339000 *
1481.1402_7.792 rel_abund_log2 b1 b3 12 12 -2.648344 11 0.0227000 *
1487.1502_7.525 rel_abund_log2 b1 b3 12 12 -2.410813 11 0.0346000 *
1487.1515_6.871 rel_abund_log2 b1 b3 12 12 -2.258789 11 0.0452000 *
1497.1674_7.486 rel_abund_log2 b1 b3 12 12 -2.805313 11 0.0171000 *
1499.1861_7.555 rel_abund_log2 b1 b3 12 12 -2.469085 11 0.0312000 *
1500.1349_7.508 rel_abund_log2 b1 b3 12 12 -3.884271 11 0.0025400 **
1503.1775_7.514 rel_abund_log2 b1 b3 12 12 -2.888027 11 0.0148000 *
1506.089_7.132 rel_abund_log2 b1 b3 12 12 2.686665 11 0.0212000 *
1507.0917_7.135 rel_abund_log2 b1 b3 12 12 2.847409 11 0.0159000 *
1509.1328_6.475 rel_abund_log2 b1 b3 12 12 2.405750 11 0.0349000 *
1510.1552_7.549 rel_abund_log2 b1 b3 12 12 -2.889388 11 0.0147000 *
1511.145_6.854 rel_abund_log2 b1 b3 12 12 -3.647010 11 0.0038400 **
1512.1627_7.554 rel_abund_log2 b1 b3 12 12 -3.613675 11 0.0040700 **
1514.1517_7.514 rel_abund_log2 b1 b3 12 12 -2.795103 11 0.0174000 *
1515.1602_7.514 rel_abund_log2 b1 b3 12 12 -2.232318 11 0.0473000 *
1520.1651_7.717 rel_abund_log2 b1 b3 12 12 4.633900 11 0.0007240 ***
1523.1825_7.536 rel_abund_log2 b1 b3 12 12 -2.931365 11 0.0137000 *
1524.1333_7.404 rel_abund_log2 b1 b3 12 12 -2.426715 11 0.0336000 *
1526.0908_8.976 rel_abund_log2 b1 b3 12 12 -2.374722 11 0.0368000 *
1527.094_8.977 rel_abund_log2 b1 b3 12 12 -2.299361 11 0.0421000 *
1531.181_7.771 rel_abund_log2 b1 b3 12 12 3.973347 11 0.0021800 **
1531.2124_8.09 rel_abund_log2 b1 b3 12 12 -2.512239 11 0.0289000 *
1531.6527_7.711 rel_abund_log2 b1 b3 12 12 4.109852 11 0.0017300 **
1532.1582_7.713 rel_abund_log2 b1 b3 12 12 5.739986 11 0.0001300 ***
1534.154_7.527 rel_abund_log2 b1 b3 12 12 -2.363101 11 0.0376000 *
1535.1521_6.713 rel_abund_log2 b1 b3 12 12 -2.509670 11 0.0290000 *
1535.1558_7.533 rel_abund_log2 b1 b3 12 12 -4.135544 11 0.0016600 **
1538.1135_7.026 rel_abund_log2 b1 b3 12 12 3.418584 11 0.0057400 **
1538.1166_6.72 rel_abund_log2 b1 b3 12 12 2.323005 11 0.0404000 *
1538.1514_7.472 rel_abund_log2 b1 b3 12 12 -2.845147 11 0.0159000 *
1540.1625_7.542 rel_abund_log2 b1 b3 12 12 -2.267836 11 0.0445000 *
1541.1852_7.515 rel_abund_log2 b1 b3 12 12 -2.491987 11 0.0299000 *
1542.1448_7.703 rel_abund_log2 b1 b3 12 12 5.510543 11 0.0001830 ***
1542.2142_6.931 rel_abund_log2 b1 b3 12 12 -2.799199 11 0.0173000 *
1542.645_7.698 rel_abund_log2 b1 b3 12 12 2.613145 11 0.0241000 *
1543.1481_7.702 rel_abund_log2 b1 b3 12 12 4.986808 11 0.0004110 ***
1544.1549_7.686 rel_abund_log2 b1 b3 12 12 2.614583 11 0.0241000 *
1545.1606_7.669 rel_abund_log2 b1 b3 12 12 2.717844 11 0.0200000 *
1546.1714_7.763 rel_abund_log2 b1 b3 12 12 3.791085 11 0.0029900 **
1546.1749_7.78 rel_abund_log2 b1 b3 12 12 3.668422 11 0.0037000 **
1546.1772_8.02 rel_abund_log2 b1 b3 12 12 4.343516 11 0.0011700 **
1547.1793_7.789 rel_abund_log2 b1 b3 12 12 3.017012 11 0.0117000 *
1547.1803_7.856 rel_abund_log2 b1 b3 12 12 4.251943 11 0.0013600 **
1547.1806_8.02 rel_abund_log2 b1 b3 12 12 3.257466 11 0.0076300 **
1550.1462_7.021 rel_abund_log2 b1 b3 12 12 2.829346 11 0.0164000 *
1550.1483_7.401 rel_abund_log2 b1 b3 12 12 -2.718053 11 0.0200000 *
1552.1254_6.917 rel_abund_log2 b1 b3 12 12 2.422737 11 0.0338000 *
1557.1328_6.71 rel_abund_log2 b1 b3 12 12 -3.793241 11 0.0029800 **
1558.0818_8.319 rel_abund_log2 b1 b3 12 12 -3.016036 11 0.0117000 *
1558.1201_7.783 rel_abund_log2 b1 b3 12 12 -3.069525 11 0.0107000 *
1558.1357_6.713 rel_abund_log2 b1 b3 12 12 -4.115652 11 0.0017100 **
1561.1392_7.955 rel_abund_log2 b1 b3 12 12 -2.301668 11 0.0419000 *
1562.1488_7.418 rel_abund_log2 b1 b3 12 12 -4.808247 11 0.0005460 ***
1562.1493_7.418 rel_abund_log2 b1 b3 12 12 -2.268444 11 0.0444000 *
1563.1535_7.418 rel_abund_log2 b1 b3 12 12 -5.880132 11 0.0001060 ***
1563.2185_8.966 rel_abund_log2 b1 b3 12 12 -4.369573 11 0.0011200 **
1564.1662_7.508 rel_abund_log2 b1 b3 12 12 -4.151074 11 0.0016100 **
1572.1304_7.394 rel_abund_log2 b1 b3 12 12 -3.013713 11 0.0118000 *
1574.1454_7.378 rel_abund_log2 b1 b3 12 12 -4.603838 11 0.0007600 ***
1574.2638_8.923 rel_abund_log2 b1 b3 12 12 2.637301 11 0.0231000 *
1576.1634_7.391 rel_abund_log2 b1 b3 12 12 -2.440638 11 0.0328000 *
1577.1679_7.401 rel_abund_log2 b1 b3 12 12 -2.237609 11 0.0469000 *
1579.649_7.139 rel_abund_log2 b1 b3 12 12 2.706296 11 0.0204000 *
1580.1032_7.792 rel_abund_log2 b1 b3 12 12 -4.388308 11 0.0010800 **
1580.9848_2.737 rel_abund_log2 b1 b3 12 12 2.466614 11 0.0313000 *
1581.1632_7.283 rel_abund_log2 b1 b3 12 12 -2.447767 11 0.0324000 *
1585.1303_6.711 rel_abund_log2 b1 b3 12 12 -2.895328 11 0.0146000 *
1585.2008_8.971 rel_abund_log2 b1 b3 12 12 -7.458777 11 0.0000126 ****
1585.6318_6.711 rel_abund_log2 b1 b3 12 12 -2.240342 11 0.0467000 *
1586.1131_6.864 rel_abund_log2 b1 b3 12 12 -2.569585 11 0.0261000 *
1586.1251_6.718 rel_abund_log2 b1 b3 12 12 -2.458546 11 0.0318000 *
1586.2043_8.972 rel_abund_log2 b1 b3 12 12 -6.216002 11 0.0000657 ****
1588.1988_7.697 rel_abund_log2 b1 b3 12 12 -2.419063 11 0.0341000 *
1589.2021_7.7 rel_abund_log2 b1 b3 12 12 -2.230743 11 0.0475000 *
1590.1749_7.958 rel_abund_log2 b1 b3 12 12 -3.689518 11 0.0035700 **
1591.1826_7.956 rel_abund_log2 b1 b3 12 12 -3.766072 11 0.0031200 **
1592.1507_6.918 rel_abund_log2 b1 b3 12 12 -2.438041 11 0.0329000 *
1596.3093_9.895 rel_abund_log2 b1 b3 12 12 2.284502 11 0.0432000 *
1596.6247_6.715 rel_abund_log2 b1 b3 12 12 -2.577322 11 0.0257000 *
1597.3131_9.894 rel_abund_log2 b1 b3 12 12 3.955483 11 0.0022500 **
1598.1451_7.197 rel_abund_log2 b1 b3 12 12 -2.675640 11 0.0216000 *
1600.6232_6.854 rel_abund_log2 b1 b3 12 12 -2.733768 11 0.0194000 *
1604.1948_7.675 rel_abund_log2 b1 b3 12 12 -2.547252 11 0.0271000 *
1605.1979_7.674 rel_abund_log2 b1 b3 12 12 -3.015505 11 0.0117000 *
1606.2002_7.968 rel_abund_log2 b1 b3 12 12 -2.217449 11 0.0486000 *
1610.1103_6.827 rel_abund_log2 b1 b3 12 12 -2.431077 11 0.0333000 *
1610.32_9.892 rel_abund_log2 b1 b3 12 12 2.324247 11 0.0403000 *
1617.1626_7.754 rel_abund_log2 b1 b3 12 12 -4.709793 11 0.0006400 ***
1621.1991_7.959 rel_abund_log2 b1 b3 12 12 -3.603673 11 0.0041400 **
1621.2757_7.96 rel_abund_log2 b1 b3 12 12 -2.513383 11 0.0288000 *
1629.2009_7.725 rel_abund_log2 b1 b3 12 12 -3.864659 11 0.0026300 **
1631.1866_7.959 rel_abund_log2 b1 b3 12 12 -4.510912 11 0.0008850 ***
1632.1881_7.956 rel_abund_log2 b1 b3 12 12 -3.464748 11 0.0052900 **
1646.2057_7.997 rel_abund_log2 b1 b3 12 12 -3.760727 11 0.0031500 **
1647.2105_8.001 rel_abund_log2 b1 b3 12 12 -3.627605 11 0.0039700 **
1648.3413_9.902 rel_abund_log2 b1 b3 12 12 -2.795073 11 0.0174000 *
1649.3444_10.225 rel_abund_log2 b1 b3 12 12 3.468146 11 0.0052600 **
1649.3448_9.904 rel_abund_log2 b1 b3 12 12 -2.770484 11 0.0182000 *
205.1221_0.621 rel_abund_log2 b1 b3 12 12 7.203038 11 0.0000175 ****
286.1437_1.13 rel_abund_log2 b1 b3 12 12 -4.552370 11 0.0008270 ***
293.0984_0.628 rel_abund_log2 b1 b3 12 12 4.371464 11 0.0011100 **
308.1855_0.633 rel_abund_log2 b1 b3 12 12 -11.692784 11 0.0000002 ****
312.1597_1.413 rel_abund_log2 b1 b3 12 12 -6.243695 11 0.0000632 ****
315.0805_0.637 rel_abund_log2 b1 b3 12 12 2.291372 11 0.0427000 *
331.0535_0.634 rel_abund_log2 b1 b3 12 12 4.536381 11 0.0008490 ***
373.2483_1.147 rel_abund_log2 b1 b3 12 12 -4.348920 11 0.0011600 **
464.1914_0.656 rel_abund_log2 b1 b3 12 12 -3.787295 11 0.0030100 **
480.3082_3.357 rel_abund_log2 b1 b3 12 12 3.440297 11 0.0055200 **
494.3238_2.494 rel_abund_log2 b1 b3 12 12 2.946906 11 0.0133000 *
502.2902_3.355 rel_abund_log2 b1 b3 12 12 2.731487 11 0.0195000 *
508.3393_2.879 rel_abund_log2 b1 b3 12 12 2.540528 11 0.0275000 *
519.3249_3.064 rel_abund_log2 b1 b3 12 12 -3.069860 11 0.0107000 *
522.3564_3.24 rel_abund_log2 b1 b3 12 12 3.917152 11 0.0024000 **
526.2644_1.714 rel_abund_log2 b1 b3 12 12 -6.892585 11 0.0000261 ****
536.437_10.971 rel_abund_log2 b1 b3 12 12 -8.537284 11 0.0000035 ****
542.3237_2.234 rel_abund_log2 b1 b3 12 12 3.173620 11 0.0088600 **
543.4017_4.622 rel_abund_log2 b1 b3 12 12 2.659865 11 0.0222000 *
544.3374_3.238 rel_abund_log2 b1 b3 12 12 3.479794 11 0.0051500 **
550.3862_3.859 rel_abund_log2 b1 b3 12 12 2.446736 11 0.0324000 *
552.4018_4.301 rel_abund_log2 b1 b3 12 12 2.608580 11 0.0243000 *
563.4273_4.415 rel_abund_log2 b1 b3 12 12 2.723593 11 0.0198000 *
568.4266_4.64 rel_abund_log2 b1 b3 12 12 -3.536226 11 0.0046600 **
577.5185_8.358 rel_abund_log2 b1 b3 12 12 4.022549 11 0.0020100 **
578.3923_2.734 rel_abund_log2 b1 b3 12 12 2.679200 11 0.0214000 *
593.4757_4.54 rel_abund_log2 b1 b3 12 12 6.135627 11 0.0000736 ****
593.4762_4.644 rel_abund_log2 b1 b3 12 12 6.083887 11 0.0000792 ****
593.4768_4.312 rel_abund_log2 b1 b3 12 12 4.385799 11 0.0010900 **
595.4929_4.645 rel_abund_log2 b1 b3 12 12 8.777957 11 0.0000027 ****
596.4154_4.906 rel_abund_log2 b1 b3 12 12 -5.670589 11 0.0001440 ***
597.5086_5.242 rel_abund_log2 b1 b3 12 12 7.478443 11 0.0000123 ****
605.5497_9.629 rel_abund_log2 b1 b3 12 12 5.315001 11 0.0002470 ***
610.431_5.16 rel_abund_log2 b1 b3 12 12 -2.749583 11 0.0189000 *
610.5401_9.655 rel_abund_log2 b1 b3 12 12 -2.825339 11 0.0165000 *
610.5401_9.784 rel_abund_log2 b1 b3 12 12 -2.970910 11 0.0127000 *
617.4748_4.643 rel_abund_log2 b1 b3 12 12 4.498395 11 0.0009040 ***
619.4811_4.462 rel_abund_log2 b1 b3 12 12 2.264179 11 0.0448000 *
619.4903_4.953 rel_abund_log2 b1 b3 12 12 7.113931 11 0.0000196 ****
623.1355_0.614 rel_abund_log2 b1 b3 12 12 4.066781 11 0.0018600 **
629.1522_0.633 rel_abund_log2 b1 b3 12 12 3.148581 11 0.0092700 **
634.5399_9.061 rel_abund_log2 b1 b3 12 12 -5.152931 11 0.0003170 ***
634.54_8.941 rel_abund_log2 b1 b3 12 12 -5.092662 11 0.0003480 ***
636.5558_9.845 rel_abund_log2 b1 b3 12 12 -2.622446 11 0.0237000 *
636.5558_9.995 rel_abund_log2 b1 b3 12 12 -2.452395 11 0.0321000 *
643.38_0.69 rel_abund_log2 b1 b3 12 12 -3.108471 11 0.0099500 **
645.1222_0.627 rel_abund_log2 b1 b3 12 12 4.888460 11 0.0004800 ***
646.6126_10.526 rel_abund_log2 b1 b3 12 12 -2.839848 11 0.0161000 *
650.6449_10.83 rel_abund_log2 b1 b3 12 12 2.802311 11 0.0172000 *
690.6188_11.754 rel_abund_log2 b1 b3 12 12 -2.215897 11 0.0487000 *
691.5742_6.403 rel_abund_log2 b1 b3 12 12 -2.407718 11 0.0348000 *
704.3938_6.501 rel_abund_log2 b1 b3 12 12 2.379313 11 0.0365000 *
717.5903_7.018 rel_abund_log2 b1 b3 12 12 -3.061996 11 0.0108000 *
718.5742_8.138 rel_abund_log2 b1 b3 12 12 -2.361426 11 0.0377000 *
719.6006_7.392 rel_abund_log2 b1 b3 12 12 -5.082736 11 0.0003530 ***
724.5277_7.806 rel_abund_log2 b1 b3 12 12 -2.447396 11 0.0324000 *
727.5745_6.067 rel_abund_log2 b1 b3 12 12 -2.687826 11 0.0211000 *
729.5912_6.714 rel_abund_log2 b1 b3 12 12 -3.482661 11 0.0051200 **
732.5542_6.723 rel_abund_log2 b1 b3 12 12 2.709267 11 0.0203000 *
732.589_8.53 rel_abund_log2 b1 b3 12 12 -2.219182 11 0.0484000 *
738.5064_6.603 rel_abund_log2 b1 b3 12 12 2.495743 11 0.0297000 *
738.543_8.181 rel_abund_log2 b1 b3 12 12 -4.252257 11 0.0013600 **
740.5559_8.156 rel_abund_log2 b1 b3 12 12 -2.840597 11 0.0161000 *
742.5753_7.523 rel_abund_log2 b1 b3 12 12 -2.705037 11 0.0205000 *
743.6054_7.227 rel_abund_log2 b1 b3 12 12 -5.919879 11 0.0001000 ****
745.6202_7.852 rel_abund_log2 b1 b3 12 12 -3.131762 11 0.0095500 **
745.6214_8.115 rel_abund_log2 b1 b3 12 12 -2.429825 11 0.0334000 *
746.5091_7.814 rel_abund_log2 b1 b3 12 12 -2.925768 11 0.0138000 *
748.5258_8.233 rel_abund_log2 b1 b3 12 12 -2.217273 11 0.0486000 *
749.5557_6.066 rel_abund_log2 b1 b3 12 12 -3.086577 11 0.0103000 *
751.5717_6.812 rel_abund_log2 b1 b3 12 12 -2.274171 11 0.0440000 *
752.5592_8.969 rel_abund_log2 b1 b3 12 12 -2.222425 11 0.0482000 *
752.5594_8.973 rel_abund_log2 b1 b3 12 12 -2.220889 11 0.0483000 *
755.6054_6.838 rel_abund_log2 b1 b3 12 12 -3.504610 11 0.0049300 **
759.4494_6.981 rel_abund_log2 b1 b3 12 12 -2.841271 11 0.0160000 *
760.421_6.983 rel_abund_log2 b1 b3 12 12 2.642327 11 0.0229000 *
760.4925_6.98 rel_abund_log2 b1 b3 12 12 -2.322611 11 0.0404000 *
760.5281_6.984 rel_abund_log2 b1 b3 12 12 3.151766 11 0.0092100 **
760.5406_6.984 rel_abund_log2 b1 b3 12 12 -3.946902 11 0.0022800 **
760.5459_7.719 rel_abund_log2 b1 b3 12 12 2.796156 11 0.0174000 *
760.5883_7.719 rel_abund_log2 b1 b3 12 12 6.299590 11 0.0000584 ****
760.9763_7.718 rel_abund_log2 b1 b3 12 12 3.532211 11 0.0047000 **
761.1927_7.717 rel_abund_log2 b1 b3 12 12 3.191564 11 0.0085800 **
761.2595_7.716 rel_abund_log2 b1 b3 12 12 3.658534 11 0.0037600 **
761.302_7.716 rel_abund_log2 b1 b3 12 12 5.097205 11 0.0003460 ***
761.3174_7.717 rel_abund_log2 b1 b3 12 12 2.686113 11 0.0212000 *
761.329_7.717 rel_abund_log2 b1 b3 12 12 3.269784 11 0.0074700 **
761.3681_7.718 rel_abund_log2 b1 b3 12 12 4.318854 11 0.0012200 **
761.3781_7.717 rel_abund_log2 b1 b3 12 12 3.707556 11 0.0034600 **
761.4062_7.717 rel_abund_log2 b1 b3 12 12 3.224083 11 0.0081000 **
761.4141_7.718 rel_abund_log2 b1 b3 12 12 4.273631 11 0.0013100 **
761.4437_7.717 rel_abund_log2 b1 b3 12 12 3.590018 11 0.0042400 **
761.4545_7.719 rel_abund_log2 b1 b3 12 12 4.354470 11 0.0011500 **
761.5191_7.716 rel_abund_log2 b1 b3 12 12 4.686045 11 0.0006650 ***
762.5032_7.719 rel_abund_log2 b1 b3 12 12 5.043618 11 0.0003760 ***
762.5251_7.716 rel_abund_log2 b1 b3 12 12 3.202730 11 0.0084100 **
762.5433_7.717 rel_abund_log2 b1 b3 12 12 3.514086 11 0.0048500 **
764.5195_7.458 rel_abund_log2 b1 b3 12 12 2.206216 11 0.0495000 *
766.5713_8.323 rel_abund_log2 b1 b3 12 12 3.863274 11 0.0026400 **
766.5755_7.417 rel_abund_log2 b1 b3 12 12 -4.833479 11 0.0005240 ***
768.551_7.206 rel_abund_log2 b1 b3 12 12 3.182754 11 0.0087200 **
768.5536_6.434 rel_abund_log2 b1 b3 12 12 -2.415815 11 0.0343000 *
768.5859_8.446 rel_abund_log2 b1 b3 12 12 2.812600 11 0.0169000 *
768.587_8.451 rel_abund_log2 b1 b3 12 12 2.670088 11 0.0218000 *
768.5909_7.579 rel_abund_log2 b1 b3 12 12 -2.539628 11 0.0275000 *
771.5762_7.712 rel_abund_log2 b1 b3 12 12 4.427648 11 0.0010200 **
773.6516_9.025 rel_abund_log2 b1 b3 12 12 -3.923204 11 0.0023800 **
780.5549_6.325 rel_abund_log2 b1 b3 12 12 2.265280 11 0.0447000 *
780.5921_7.79 rel_abund_log2 b1 b3 12 12 -4.047844 11 0.0019200 **
781.6192_8.718 rel_abund_log2 b1 b3 12 12 3.315082 11 0.0068900 **
781.62_7.043 rel_abund_log2 b1 b3 12 12 -5.517666 11 0.0001810 ***
783.2313_6.877 rel_abund_log2 b1 b3 12 12 -2.495940 11 0.0297000 *
783.6368_7.847 rel_abund_log2 b1 b3 12 12 -6.184435 11 0.0000687 ****
784.5879_7.141 rel_abund_log2 b1 b3 12 12 2.216599 11 0.0487000 *
784.6654_10.38 rel_abund_log2 b1 b3 12 12 2.642904 11 0.0229000 *
784.779_6.877 rel_abund_log2 b1 b3 12 12 -2.422941 11 0.0338000 *
785.0064_6.878 rel_abund_log2 b1 b3 12 12 -2.620589 11 0.0238000 *
785.0201_6.879 rel_abund_log2 b1 b3 12 12 -2.603001 11 0.0246000 *
785.0389_6.88 rel_abund_log2 b1 b3 12 12 -2.676730 11 0.0215000 *
785.6536_8.747 rel_abund_log2 b1 b3 12 12 -2.897012 11 0.0145000 *
786.5814_6.876 rel_abund_log2 b1 b3 12 12 -3.294990 11 0.0071400 **
787.6674_9.202 rel_abund_log2 b1 b3 12 12 -4.800036 11 0.0005530 ***
787.6701_9.896 rel_abund_log2 b1 b3 12 12 2.369448 11 0.0372000 *
788.5563_7.415 rel_abund_log2 b1 b3 12 12 -6.413750 11 0.0000498 ****
788.6177_8.867 rel_abund_log2 b1 b3 12 12 2.487333 11 0.0302000 *
790.5744_7.193 rel_abund_log2 b1 b3 12 12 -3.924007 11 0.0023800 **
791.5433_6.743 rel_abund_log2 b1 b3 12 12 3.325197 11 0.0067700 **
792.5531_6.261 rel_abund_log2 b1 b3 12 12 -2.644635 11 0.0228000 *
792.5534_8.102 rel_abund_log2 b1 b3 12 12 -2.337666 11 0.0393000 *
792.5893_7.058 rel_abund_log2 b1 b3 12 12 3.020604 11 0.0116000 *
792.5899_7.556 rel_abund_log2 b1 b3 12 12 -2.958261 11 0.0130000 *
794.6054_8.214 rel_abund_log2 b1 b3 12 12 -3.720625 11 0.0033800 **
794.6057_8.544 rel_abund_log2 b1 b3 12 12 -2.235984 11 0.0470000 *
794.6062_7.691 rel_abund_log2 b1 b3 12 12 -2.433692 11 0.0332000 *
796.5845_7.27 rel_abund_log2 b1 b3 12 12 -2.742574 11 0.0191000 *
796.5848_7.423 rel_abund_log2 b1 b3 12 12 -4.620937 11 0.0007390 ***
796.621_8.383 rel_abund_log2 b1 b3 12 12 -2.456822 11 0.0319000 *
797.6383_8.603 rel_abund_log2 b1 b3 12 12 -3.389415 11 0.0060400 **
797.6453_8.401 rel_abund_log2 b1 b3 12 12 -4.778933 11 0.0005720 ***
798.5402_7.73 rel_abund_log2 b1 b3 12 12 2.734966 11 0.0194000 *
798.6003_7.83 rel_abund_log2 b1 b3 12 12 -2.531295 11 0.0279000 *
798.6518_8.391 rel_abund_log2 b1 b3 12 12 -5.954199 11 0.0000953 ****
799.6069_8.865 rel_abund_log2 b1 b3 12 12 2.294520 11 0.0424000 *
799.6686_9.32 rel_abund_log2 b1 b3 12 12 -4.160291 11 0.0015900 **
802.5357_6.323 rel_abund_log2 b1 b3 12 12 2.458205 11 0.0318000 *
802.5717_7.81 rel_abund_log2 b1 b3 12 12 -3.075678 11 0.0106000 *
804.5937_7.544 rel_abund_log2 b1 b3 12 12 -2.568849 11 0.0261000 *
805.0108_3.238 rel_abund_log2 b1 b3 12 12 3.622544 11 0.0040100 **
805.6187_7.848 rel_abund_log2 b1 b3 12 12 -4.117799 11 0.0017100 **
805.6784_9.291 rel_abund_log2 b1 b3 12 12 2.919403 11 0.0140000 *
807.6349_8.948 rel_abund_log2 b1 b3 12 12 4.663819 11 0.0006890 ***
807.6359_7.483 rel_abund_log2 b1 b3 12 12 -5.110564 11 0.0003380 ***
808.6375_8.751 rel_abund_log2 b1 b3 12 12 -3.287272 11 0.0072400 **
809.6507_9.876 rel_abund_log2 b1 b3 12 12 3.399918 11 0.0059300 **
809.6525_8.065 rel_abund_log2 b1 b3 12 12 -4.032616 11 0.0019700 **
810.5988_8.865 rel_abund_log2 b1 b3 12 12 2.584515 11 0.0254000 *
810.6013_7.646 rel_abund_log2 b1 b3 12 12 -2.294571 11 0.0424000 *
810.6041_7.959 rel_abund_log2 b1 b3 12 12 -3.003128 11 0.0120000 *
810.6564_8.03 rel_abund_log2 b1 b3 12 12 -3.611987 11 0.0040800 **
810.6812_10.387 rel_abund_log2 b1 b3 12 12 -3.071393 11 0.0106000 *
811.0052_7.959 rel_abund_log2 b1 b3 12 12 -2.611903 11 0.0242000 *
811.2977_7.959 rel_abund_log2 b1 b3 12 12 -2.473330 11 0.0309000 *
811.4149_7.961 rel_abund_log2 b1 b3 12 12 -2.720729 11 0.0199000 *
811.4537_7.958 rel_abund_log2 b1 b3 12 12 -2.595710 11 0.0249000 *
811.5374_7.96 rel_abund_log2 b1 b3 12 12 -2.338350 11 0.0393000 *
811.6292_7.819 rel_abund_log2 b1 b3 12 12 -3.317591 11 0.0068600 **
811.6703_8.961 rel_abund_log2 b1 b3 12 12 -3.477834 11 0.0051700 **
812.5561_7.198 rel_abund_log2 b1 b3 12 12 -3.677711 11 0.0036400 **
813.6106_7.959 rel_abund_log2 b1 b3 12 12 -2.453038 11 0.0321000 *
813.6834_9.437 rel_abund_log2 b1 b3 12 12 -4.615418 11 0.0007460 ***
813.6866_9.902 rel_abund_log2 b1 b3 12 12 -2.406519 11 0.0348000 *
814.5355_8.122 rel_abund_log2 b1 b3 12 12 -3.224469 11 0.0080900 **
814.535_6.26 rel_abund_log2 b1 b3 12 12 -2.251281 11 0.0458000 *
814.6127_7.96 rel_abund_log2 b1 b3 12 12 -2.496902 11 0.0297000 *
815.7025_10.568 rel_abund_log2 b1 b3 12 12 2.795121 11 0.0174000 *
816.5872_8.538 rel_abund_log2 b1 b3 12 12 -2.587620 11 0.0252000 *
817.7051_10.344 rel_abund_log2 b1 b3 12 12 -3.133261 11 0.0095200 **
818.5668_7.42 rel_abund_log2 b1 b3 12 12 -3.005333 11 0.0120000 *
818.6049_7.793 rel_abund_log2 b1 b3 12 12 -3.303713 11 0.0070300 **
819.6577_6.728 rel_abund_log2 b1 b3 12 12 3.282880 11 0.0073000 **
820.5836_6.837 rel_abund_log2 b1 b3 12 12 -2.769597 11 0.0182000 *
820.5846_7.213 rel_abund_log2 b1 b3 12 12 -3.709193 11 0.0034500 **
820.6202_7.907 rel_abund_log2 b1 b3 12 12 -6.565304 11 0.0000405 ****
820.6961_11.574 rel_abund_log2 b1 b3 12 12 -6.272267 11 0.0000607 ****
822.5994_7.509 rel_abund_log2 b1 b3 12 12 -5.140725 11 0.0003230 ***
824.616_8.544 rel_abund_log2 b1 b3 12 12 -2.352586 11 0.0383000 *
824.6209_7.408 rel_abund_log2 b1 b3 12 12 -3.452299 11 0.0054100 **
824.6527_9.167 rel_abund_log2 b1 b3 12 12 -2.284485 11 0.0432000 *
825.6241_9.886 rel_abund_log2 b1 b3 12 12 2.513064 11 0.0288000 *
825.6473_7.81 rel_abund_log2 b1 b3 12 12 -2.659947 11 0.0222000 *
825.6778_9.575 rel_abund_log2 b1 b3 12 12 -4.265566 11 0.0013300 **
825.6815_9.335 rel_abund_log2 b1 b3 12 12 -9.279000 11 0.0000016 ****
825.682_9.561 rel_abund_log2 b1 b3 12 12 -3.589082 11 0.0042500 **
826.5716_8.868 rel_abund_log2 b1 b3 12 12 2.366507 11 0.0374000 *
827.663_8.483 rel_abund_log2 b1 b3 12 12 -4.978174 11 0.0004170 ***
827.6998_10.277 rel_abund_log2 b1 b3 12 12 -6.660916 11 0.0000356 ****
827.6999_10.389 rel_abund_log2 b1 b3 12 12 -5.659058 11 0.0001470 ***
827.6999_10.502 rel_abund_log2 b1 b3 12 12 -2.520035 11 0.0285000 *
828.5522_5.728 rel_abund_log2 b1 b3 12 12 2.402752 11 0.0351000 *
828.6106_7.766 rel_abund_log2 b1 b3 12 12 -2.334177 11 0.0396000 *
829.6782_8.401 rel_abund_log2 b1 b3 12 12 -4.322869 11 0.0012100 **
830.6471_9.551 rel_abund_log2 b1 b3 12 12 -3.536399 11 0.0046600 **
831.57_7.208 rel_abund_log2 b1 b3 12 12 -2.348517 11 0.0386000 *
831.6353_8.196 rel_abund_log2 b1 b3 12 12 -5.429552 11 0.0002070 ***
832.582_7.631 rel_abund_log2 b1 b3 12 12 -3.581294 11 0.0043100 **
834.6002_7.257 rel_abund_log2 b1 b3 12 12 -4.639789 11 0.0007170 ***
834.602_7.751 rel_abund_log2 b1 b3 12 12 -2.958872 11 0.0130000 *
835.6663_8.407 rel_abund_log2 b1 b3 12 12 -3.459352 11 0.0053400 **
835.6664_10.22 rel_abund_log2 b1 b3 12 12 2.495114 11 0.0298000 *
835.6666_9.91 rel_abund_log2 b1 b3 12 12 -3.947588 11 0.0022800 **
836.6148_8.439 rel_abund_log2 b1 b3 12 12 -2.202123 11 0.0499000 *
837.5477_8.363 rel_abund_log2 b1 b3 12 12 4.567409 11 0.0008070 ***
837.6724_9.906 rel_abund_log2 b1 b3 12 12 -4.533839 11 0.0008520 ***
839.6989_10.178 rel_abund_log2 b1 b3 12 12 -2.815759 11 0.0168000 *
842.638_7.268 rel_abund_log2 b1 b3 12 12 -2.546429 11 0.0272000 *
842.723_11.155 rel_abund_log2 b1 b3 12 12 -2.294663 11 0.0424000 *
844.7397_11.265 rel_abund_log2 b1 b3 12 12 -2.409950 11 0.0346000 *
846.6641_8.878 rel_abund_log2 b1 b3 12 12 2.287845 11 0.0429000 *
847.6893_7.716 rel_abund_log2 b1 b3 12 12 3.521152 11 0.0047900 **
848.6521_9.028 rel_abund_log2 b1 b3 12 12 -5.509323 11 0.0001840 ***
849.6682_6.746 rel_abund_log2 b1 b3 12 12 2.894409 11 0.0146000 *
854.4963_2.738 rel_abund_log2 b1 b3 12 12 2.448216 11 0.0323000 *
854.574_8.362 rel_abund_log2 b1 b3 12 12 6.157517 11 0.0000713 ****
855.6216_6.322 rel_abund_log2 b1 b3 12 12 2.427139 11 0.0336000 *
856.5819_7.24 rel_abund_log2 b1 b3 12 12 -5.707520 11 0.0001370 ***
856.5823_7.778 rel_abund_log2 b1 b3 12 12 -3.750779 11 0.0032100 **
858.5914_7.792 rel_abund_log2 b1 b3 12 12 -3.237207 11 0.0079100 **
858.5977_8.453 rel_abund_log2 b1 b3 12 12 -2.993840 11 0.0122000 *
858.5992_7.06 rel_abund_log2 b1 b3 12 12 -3.983599 11 0.0021500 **
858.7545_11.345 rel_abund_log2 b1 b3 12 12 -3.056433 11 0.0109000 *
859.53_8.35 rel_abund_log2 b1 b3 12 12 4.511522 11 0.0008840 ***
859.6891_7.519 rel_abund_log2 b1 b3 12 12 -3.081250 11 0.0104000 *
860.6133_8.785 rel_abund_log2 b1 b3 12 12 -2.609245 11 0.0243000 *
861.7048_7.713 rel_abund_log2 b1 b3 12 12 3.925017 11 0.0023700 **
863.6838_8.874 rel_abund_log2 b1 b3 12 12 2.856332 11 0.0156000 *
863.6839_6.733 rel_abund_log2 b1 b3 12 12 2.684970 11 0.0212000 *
863.7092_11.343 rel_abund_log2 b1 b3 12 12 -2.920883 11 0.0139000 *
865.5795_9.626 rel_abund_log2 b1 b3 12 12 4.358050 11 0.0011400 **
868.7389_11.19 rel_abund_log2 b1 b3 12 12 -2.911197 11 0.0142000 *
870.6336_9.039 rel_abund_log2 b1 b3 12 12 -6.403492 11 0.0000506 ****
870.7558_11.296 rel_abund_log2 b1 b3 12 12 -4.128270 11 0.0016800 **
871.6776_11.111 rel_abund_log2 b1 b3 12 12 -2.208492 11 0.0493000 *
872.5379_6.428 rel_abund_log2 b1 b3 12 12 -2.370879 11 0.0371000 *
872.6526_8.477 rel_abund_log2 b1 b3 12 12 -4.693492 11 0.0006570 ***
872.652_8.777 rel_abund_log2 b1 b3 12 12 -3.936031 11 0.0023300 **
872.7731_11.418 rel_abund_log2 b1 b3 12 12 -4.053025 11 0.0019100 **
873.7045_7.52 rel_abund_log2 b1 b3 12 12 -2.451144 11 0.0322000 *
874.6655_10.042 rel_abund_log2 b1 b3 12 12 -7.151698 11 0.0000186 ****
874.7461_11.559 rel_abund_log2 b1 b3 12 12 -2.257252 11 0.0453000 *
875.7095_11.292 rel_abund_log2 b1 b3 12 12 -3.562920 11 0.0044500 **
875.7207_8.87 rel_abund_log2 b1 b3 12 12 2.365050 11 0.0375000 *
876.5695_7.88 rel_abund_log2 b1 b3 12 12 2.286973 11 0.0430000 *
876.6835_10.245 rel_abund_log2 b1 b3 12 12 -6.880155 11 0.0000266 ****
876.6836_10.537 rel_abund_log2 b1 b3 12 12 -2.315502 11 0.0409000 *
876.854_11.56 rel_abund_log2 b1 b3 12 12 -2.619942 11 0.0238000 *
877.6374_9.86 rel_abund_log2 b1 b3 12 12 3.866733 11 0.0026200 **
877.6374_9.988 rel_abund_log2 b1 b3 12 12 2.620523 11 0.0238000 *
877.7_7.713 rel_abund_log2 b1 b3 12 12 2.564642 11 0.0263000 *
878.5852_8.857 rel_abund_log2 b1 b3 12 12 2.279151 11 0.0436000 *
878.7033_7.717 rel_abund_log2 b1 b3 12 12 6.785827 11 0.0000301 ****
879.7408_11.578 rel_abund_log2 b1 b3 12 12 2.505650 11 0.0292000 *
880.718_11.248 rel_abund_log2 b1 b3 12 12 -2.511851 11 0.0289000 *
883.6892_7.419 rel_abund_log2 b1 b3 12 12 -5.423001 11 0.0002090 ***
883.6894_6.894 rel_abund_log2 b1 b3 12 12 -2.453436 11 0.0320000 *
884.7697_11.358 rel_abund_log2 b1 b3 12 12 -3.945413 11 0.0022900 **
885.7047_7.587 rel_abund_log2 b1 b3 12 12 -2.770862 11 0.0182000 *
886.7858_11.492 rel_abund_log2 b1 b3 12 12 -3.577744 11 0.0043400 **
891.7156_7.718 rel_abund_log2 b1 b3 12 12 4.087962 11 0.0018000 **
891.7406_11.489 rel_abund_log2 b1 b3 12 12 -3.302745 11 0.0070400 **
892.7383_11.126 rel_abund_log2 b1 b3 12 12 -2.819218 11 0.0167000 *
894.7548_11.21 rel_abund_log2 b1 b3 12 12 -3.405735 11 0.0058700 **
896.7714_11.316 rel_abund_log2 b1 b3 12 12 -3.720716 11 0.0033800 **
897.7047_7.419 rel_abund_log2 b1 b3 12 12 -4.718995 11 0.0006300 ***
897.705_7.958 rel_abund_log2 b1 b3 12 12 -3.091411 11 0.0103000 *
898.7872_11.44 rel_abund_log2 b1 b3 12 12 -2.438121 11 0.0329000 *
899.7091_11.203 rel_abund_log2 b1 b3 12 12 -4.549683 11 0.0008310 ***
900.6836_9.96 rel_abund_log2 b1 b3 12 12 -4.963738 11 0.0004260 ***
901.6999_7.143 rel_abund_log2 b1 b3 12 12 3.762940 11 0.0031400 **
901.7251_11.318 rel_abund_log2 b1 b3 12 12 -2.665574 11 0.0220000 *
907.6886_7.2 rel_abund_log2 b1 b3 12 12 -2.370170 11 0.0371000 *
911.5614_9.119 rel_abund_log2 b1 b3 12 12 3.417794 11 0.0057500 **
911.7203_7.674 rel_abund_log2 b1 b3 12 12 -2.700105 11 0.0207000 *
911.7206_7.958 rel_abund_log2 b1 b3 12 12 -2.418093 11 0.0341000 *
912.8727_11.58 rel_abund_log2 b1 b3 12 12 3.012375 11 0.0118000 *
913.7001_6.872 rel_abund_log2 b1 b3 12 12 -2.430193 11 0.0334000 *
918.754_11.178 rel_abund_log2 b1 b3 12 12 -2.429060 11 0.0335000 *
919.7465_8.87 rel_abund_log2 b1 b3 12 12 2.830942 11 0.0163000 *
922.7862_11.386 rel_abund_log2 b1 b3 12 12 -3.172938 11 0.0088700 **
924.8016_11.511 rel_abund_log2 b1 b3 12 12 -6.292248 11 0.0000590 ****
926.8159_11.647 rel_abund_log2 b1 b3 12 12 -2.973241 11 0.0127000 *
927.7399_11.374 rel_abund_log2 b1 b3 12 12 -2.567552 11 0.0262000 *
928.7831_8.964 rel_abund_log2 b1 b3 12 12 -3.391864 11 0.0060200 **
931.7715_11.646 rel_abund_log2 b1 b3 12 12 -4.320578 11 0.0012100 **
933.7875_11.787 rel_abund_log2 b1 b3 12 12 -2.311993 11 0.0412000 *
936.8015_11.483 rel_abund_log2 b1 b3 12 12 -2.615848 11 0.0240000 *
937.6995_6.371 rel_abund_log2 b1 b3 12 12 -2.953401 11 0.0131000 *
938.8159_11.193 rel_abund_log2 b1 b3 12 12 -3.231213 11 0.0080000 **
941.7308_7.633 rel_abund_log2 b1 b3 12 12 -2.592930 11 0.0250000 *
941.7313_7.957 rel_abund_log2 b1 b3 12 12 -2.824960 11 0.0165000 *
942.7986_8.961 rel_abund_log2 b1 b3 12 12 -2.279060 11 0.0436000 *
950.8156_11.512 rel_abund_log2 b1 b3 12 12 -3.010495 11 0.0119000 *
951.7153_7.77 rel_abund_log2 b1 b3 12 12 -2.600807 11 0.0247000 *
952.831_11.66 rel_abund_log2 b1 b3 12 12 -3.110511 11 0.0099200 **
957.7865_11.655 rel_abund_log2 b1 b3 12 12 -3.166048 11 0.0089800 **
972.8_11.345 rel_abund_log2 b1 b3 12 12 -2.247276 11 0.0461000 *
978.8456_11.66 rel_abund_log2 b1 b3 12 12 -3.276276 11 0.0073800 **
993.7984_10.238 rel_abund_log2 b1 b3 12 12 -2.862384 11 0.0155000 *
# how many are significant?
nrow(red_t.test_paired_sig)
## [1] 452
Remove BG diet
# let's grab both datasets for features sig in pre v post red and pre v post control and combine them
fulljoin_t.test_redANDctrl <- full_join(red_t.test_paired_sig, ctrl_t.test_paired_sig,
                                        by = "mz_rt",
                                        suffix = c(".red", ".ctrl"))

# number of features in combined list
nrow(fulljoin_t.test_redANDctrl)
## [1] 632

Let’s try and remove features significant due to the background diet

sig_paired_red_rmBG <- fulljoin_t.test_redANDctrl %>%
  # add a column to account for direction
  mutate(sign = statistic.red * statistic.ctrl) %>%
  # replace NAs in the sign column with 0
  mutate(sign = replace_na(sign, 0)) %>%
  # replace NAs in the statistic.ctrl column to 0
  mutate(statistic.ctrl = replace_na(statistic.ctrl, 0)) %>%
  # filter for columns that are either negative (means ctrl and tomato are going in opposite dir) or where the stat.ctrl col is 0 (so we don't remove features that are just not present in the sig control list)
  filter((sign < 0 | statistic.ctrl == 0))

# number of features without bg diet effect
nrow(sig_paired_red_rmBG)
## [1] 195

How many BG-diet-related features did we remove from the list of significant beta features?

nrow(red_t.test_paired_sig) - nrow(sig_paired_red_rmBG)
## [1] 257
ANOVA overlap

Keep sig features in t-test that have a match in sig ANOVA. Let’s take our new feature list (background diet effect removed)

# select only features from paired list that have a match in ANOVA list
red_sig_ANOVA_overlap_paired <- inner_join(sig_paired_red_rmBG,
                                            trt_tukeyHSD_sig,
                                            by = "mz_rt",
                                            suffix = c(".t-test", ".tukeys"))

# features overlapping with sig ANOVA
unique(red_sig_ANOVA_overlap_paired$mz_rt)
##  [1] "1526.0908_8.976" "1527.094_8.977"  "1649.3448_9.904" "536.437_10.971" 
##  [5] "605.5497_9.629"  "738.543_8.181"   "748.5258_8.233"  "785.0201_6.879" 
##  [9] "797.6453_8.401"  "813.6866_9.902"  "827.6999_10.389" "865.5795_9.626" 
## [13] "876.5695_7.88"   "878.5852_8.857"  "897.705_7.958"

Paired tomato

# run paired t-tests for control intervention
tomato_t.test_paired <- df_for_stats %>%
  filter(tomato_or_control == "tomato") %>%
 dplyr::select(subject, period, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ period, 
         paired = TRUE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
tomato_t.test_paired_sig <- tomato_t.test_paired %>%
  filter(p < 0.05)
kable(tomato_t.test_paired_sig)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
1014.9413_11.924 rel_abund_log2 b1 b3 24 24 2.756628 23 0.0112000 *
1017.6873_3.095 rel_abund_log2 b1 b3 24 24 3.816592 23 0.0008860 ***
1018.1281_3.082 rel_abund_log2 b1 b3 24 24 -2.446994 23 0.0225000 *
1020.8931_11.508 rel_abund_log2 b1 b3 24 24 -2.464274 23 0.0216000 *
1026.6606_3.098 rel_abund_log2 b1 b3 24 24 2.352023 23 0.0276000 *
1028.9572_12.137 rel_abund_log2 b1 b3 24 24 2.672502 23 0.0136000 *
1034.9093_11.511 rel_abund_log2 b1 b3 24 24 -3.411410 23 0.0023900 **
1036.925_11.654 rel_abund_log2 b1 b3 24 24 -3.556487 23 0.0016800 **
1039.6688_3.106 rel_abund_log2 b1 b3 24 24 4.199101 23 0.0003430 ***
1039.6724_2.735 rel_abund_log2 b1 b3 24 24 2.186184 23 0.0392000 *
1041.9353_11.754 rel_abund_log2 b1 b3 24 24 -4.638464 23 0.0001150 ***
1061.6537_2.738 rel_abund_log2 b1 b3 24 24 2.110463 23 0.0459000 *
1061.8543_10.506 rel_abund_log2 b1 b3 24 24 3.652203 23 0.0013300 **
1128.671_2.722 rel_abund_log2 b1 b3 24 24 3.024166 23 0.0060400 **
1151.3639_7.711 rel_abund_log2 b1 b3 24 24 4.065182 23 0.0004780 ***
1151.8656_7.71 rel_abund_log2 b1 b3 24 24 4.988312 23 0.0000480 ****
1155.8333_6.446 rel_abund_log2 b1 b3 24 24 -2.446795 23 0.0225000 *
1157.3434_6.852 rel_abund_log2 b1 b3 24 24 -2.435051 23 0.0231000 *
116.0707_0.623 rel_abund_log2 b1 b3 24 24 3.507298 23 0.0018900 **
1163.3585_7.687 rel_abund_log2 b1 b3 24 24 3.350224 23 0.0027700 **
1169.3422_6.843 rel_abund_log2 b1 b3 24 24 -2.396459 23 0.0251000 *
1171.3299_6.847 rel_abund_log2 b1 b3 24 24 2.072837 23 0.0496000 *
118.0864_0.597 rel_abund_log2 b1 b3 24 24 -7.032818 23 0.0000004 ****
1187.3609_7.137 rel_abund_log2 b1 b3 24 24 3.288973 23 0.0032100 **
1187.8641_7.656 rel_abund_log2 b1 b3 24 24 -2.141304 23 0.0431000 *
1187.8642_7.137 rel_abund_log2 b1 b3 24 24 2.435475 23 0.0230000 *
1187.8649_7.285 rel_abund_log2 b1 b3 24 24 -2.362362 23 0.0270000 *
1189.3305_6.84 rel_abund_log2 b1 b3 24 24 -2.366287 23 0.0268000 *
1192.8412_6.709 rel_abund_log2 b1 b3 24 24 -3.482705 23 0.0020100 **
1193.9116_8.867 rel_abund_log2 b1 b3 24 24 3.979780 23 0.0005920 ***
1195.8336_6.857 rel_abund_log2 b1 b3 24 24 -2.612341 23 0.0156000 *
1198.856_7.141 rel_abund_log2 b1 b3 24 24 2.658633 23 0.0140000 *
1199.3591_7.285 rel_abund_log2 b1 b3 24 24 -2.454670 23 0.0221000 *
1199.864_7.757 rel_abund_log2 b1 b3 24 24 -2.126008 23 0.0445000 *
1204.4035_8.865 rel_abund_log2 b1 b3 24 24 3.845184 23 0.0008260 ***
1204.9038_8.864 rel_abund_log2 b1 b3 24 24 3.664984 23 0.0012900 **
1204.9948_9.897 rel_abund_log2 b1 b3 24 24 3.904721 23 0.0007130 ***
1205.4054_8.863 rel_abund_log2 b1 b3 24 24 4.173292 23 0.0003660 ***
1205.4975_9.898 rel_abund_log2 b1 b3 24 24 3.811819 23 0.0008970 ***
1210.8558_7.304 rel_abund_log2 b1 b3 24 24 2.598275 23 0.0161000 *
1216.4896_9.892 rel_abund_log2 b1 b3 24 24 4.497473 23 0.0001630 ***
1216.9911_9.896 rel_abund_log2 b1 b3 24 24 4.691952 23 0.0001000 ****
1225.3783_7.964 rel_abund_log2 b1 b3 24 24 2.876339 23 0.0085300 **
1225.88_7.956 rel_abund_log2 b1 b3 24 24 2.146726 23 0.0426000 *
1226.887_7.956 rel_abund_log2 b1 b3 24 24 -2.907790 23 0.0079300 **
1229.9108_8.397 rel_abund_log2 b1 b3 24 24 -3.070067 23 0.0054200 **
1229.9993_9.9 rel_abund_log2 b1 b3 24 24 -2.893940 23 0.0081900 **
1231.5117_9.905 rel_abund_log2 b1 b3 24 24 -4.284925 23 0.0002770 ***
1237.8134_10.084 rel_abund_log2 b1 b3 24 24 3.074231 23 0.0053700 **
1241.4043_8.395 rel_abund_log2 b1 b3 24 24 -2.853972 23 0.0089800 **
1242.5051_10.22 rel_abund_log2 b1 b3 24 24 3.673215 23 0.0012600 **
1242.5053_9.906 rel_abund_log2 b1 b3 24 24 -4.582366 23 0.0001320 ***
1249.7383_5.838 rel_abund_log2 b1 b3 24 24 -2.157385 23 0.0417000 *
1259.7951_10.087 rel_abund_log2 b1 b3 24 24 2.835315 23 0.0093800 **
1263.8289_10.086 rel_abund_log2 b1 b3 24 24 -2.384164 23 0.0258000 *
1263.8289_10.349 rel_abund_log2 b1 b3 24 24 3.680038 23 0.0012400 **
1265.8449_10.582 rel_abund_log2 b1 b3 24 24 2.276398 23 0.0324000 *
1268.2053_12.079 rel_abund_log2 b1 b3 24 24 -2.249827 23 0.0343000 *
1276.1913_12.079 rel_abund_log2 b1 b3 24 24 -2.103715 23 0.0465000 *
1281.8397_10.519 rel_abund_log2 b1 b3 24 24 3.692553 23 0.0012000 **
1285.8106_10.085 rel_abund_log2 b1 b3 24 24 -3.479606 23 0.0020300 **
1297.1947_10.828 rel_abund_log2 b1 b3 24 24 2.701741 23 0.0127000 *
1298.1748_11.858 rel_abund_log2 b1 b3 24 24 -2.223626 23 0.0363000 *
1298.1983_10.827 rel_abund_log2 b1 b3 24 24 3.290609 23 0.0032000 **
1299.1762_12.078 rel_abund_log2 b1 b3 24 24 -2.075740 23 0.0493000 *
1302.2067_12.075 rel_abund_log2 b1 b3 24 24 2.278947 23 0.0323000 *
1308.157_11.948 rel_abund_log2 b1 b3 24 24 -2.685996 23 0.0132000 *
1316.1245_11.664 rel_abund_log2 b1 b3 24 24 -2.812332 23 0.0098900 **
1318.2126_11.857 rel_abund_log2 b1 b3 24 24 -2.121279 23 0.0449000 *
1319.2346_12.075 rel_abund_log2 b1 b3 24 24 2.568846 23 0.0172000 *
1322.2624_10.832 rel_abund_log2 b1 b3 24 24 3.539935 23 0.0017500 **
1334.1724_11.947 rel_abund_log2 b1 b3 24 24 -2.840458 23 0.0092700 **
1339.0138_6.829 rel_abund_log2 b1 b3 24 24 4.712884 23 0.0000952 ****
1339.2017_11.786 rel_abund_log2 b1 b3 24 24 -2.353661 23 0.0275000 *
1341.0272_6.83 rel_abund_log2 b1 b3 24 24 5.709964 23 0.0000082 ****
1341.2177_11.895 rel_abund_log2 b1 b3 24 24 -3.988043 23 0.0005790 ***
1342.2211_11.896 rel_abund_log2 b1 b3 24 24 -3.070919 23 0.0054100 **
1346.1728_11.908 rel_abund_log2 b1 b3 24 24 -3.523353 23 0.0018200 **
1347.1765_11.909 rel_abund_log2 b1 b3 24 24 -3.074887 23 0.0053600 **
1363.015_6.835 rel_abund_log2 b1 b3 24 24 4.190933 23 0.0003500 ***
1364.2059_11.753 rel_abund_log2 b1 b3 24 24 -4.184076 23 0.0003560 ***
1365.0287_6.836 rel_abund_log2 b1 b3 24 24 7.106371 23 0.0000003 ****
1369.1611_11.766 rel_abund_log2 b1 b3 24 24 -2.460842 23 0.0218000 *
1389.0311_6.813 rel_abund_log2 b1 b3 24 24 5.381553 23 0.0000182 ****
1424.1384_8.941 rel_abund_log2 b1 b3 24 24 -2.070168 23 0.0498000 *
1447.1208_6.507 rel_abund_log2 b1 b3 24 24 -2.463114 23 0.0217000 *
1454.1867_9.904 rel_abund_log2 b1 b3 24 24 -5.025228 23 0.0000438 ****
1454.1868_9.88 rel_abund_log2 b1 b3 24 24 -5.067277 23 0.0000395 ****
1455.1905_9.914 rel_abund_log2 b1 b3 24 24 -4.145057 23 0.0003920 ***
1465.1678_7.525 rel_abund_log2 b1 b3 24 24 -2.140800 23 0.0431000 *
1470.0283_7.811 rel_abund_log2 b1 b3 24 24 -3.435923 23 0.0022500 **
1472.1218_6.472 rel_abund_log2 b1 b3 24 24 -2.895900 23 0.0081500 **
1473.1717_7.517 rel_abund_log2 b1 b3 24 24 -3.883038 23 0.0007520 ***
1475.1518_7.004 rel_abund_log2 b1 b3 24 24 -5.399438 23 0.0000174 ****
1476.1365_7.528 rel_abund_log2 b1 b3 24 24 -4.410957 23 0.0002020 ***
1476.1552_7.005 rel_abund_log2 b1 b3 24 24 -4.278709 23 0.0002810 ***
1478.1161_7.023 rel_abund_log2 b1 b3 24 24 -2.608798 23 0.0157000 *
1479.1185_7.024 rel_abund_log2 b1 b3 24 24 -2.398538 23 0.0250000 *
1479.137_7.538 rel_abund_log2 b1 b3 24 24 -3.411540 23 0.0023900 **
1481.1402_7.792 rel_abund_log2 b1 b3 24 24 -4.049810 23 0.0004970 ***
1487.1502_7.525 rel_abund_log2 b1 b3 24 24 -2.864276 23 0.0087700 **
1487.1511_6.872 rel_abund_log2 b1 b3 24 24 -2.613269 23 0.0155000 *
1487.1515_6.871 rel_abund_log2 b1 b3 24 24 -2.676855 23 0.0135000 *
1488.1552_6.873 rel_abund_log2 b1 b3 24 24 -3.550125 23 0.0017100 **
1497.1674_7.486 rel_abund_log2 b1 b3 24 24 -4.851900 23 0.0000674 ****
1499.1861_7.555 rel_abund_log2 b1 b3 24 24 -2.738345 23 0.0117000 *
1500.0993_6.518 rel_abund_log2 b1 b3 24 24 -2.402836 23 0.0247000 *
1500.1349_7.508 rel_abund_log2 b1 b3 24 24 -6.059333 23 0.0000035 ****
1502.1505_7.558 rel_abund_log2 b1 b3 24 24 -2.294506 23 0.0312000 *
1503.1775_7.514 rel_abund_log2 b1 b3 24 24 -3.555069 23 0.0016900 **
1504.1822_7.513 rel_abund_log2 b1 b3 24 24 -2.566863 23 0.0172000 *
1506.089_7.132 rel_abund_log2 b1 b3 24 24 2.706950 23 0.0126000 *
1506.1473_7.519 rel_abund_log2 b1 b3 24 24 -2.937593 23 0.0074000 **
1507.0917_7.135 rel_abund_log2 b1 b3 24 24 2.245667 23 0.0346000 *
1507.1178_6.465 rel_abund_log2 b1 b3 24 24 -2.127343 23 0.0443000 *
1508.1468_7.513 rel_abund_log2 b1 b3 24 24 -2.280851 23 0.0321000 *
1508.1474_7.516 rel_abund_log2 b1 b3 24 24 -3.536291 23 0.0017600 **
1509.1328_6.475 rel_abund_log2 b1 b3 24 24 2.973257 23 0.0068000 **
1509.1474_7.507 rel_abund_log2 b1 b3 24 24 -4.106856 23 0.0004310 ***
1510.1192_7.742 rel_abund_log2 b1 b3 24 24 2.091928 23 0.0477000 *
1510.1192_7.922 rel_abund_log2 b1 b3 24 24 -2.198173 23 0.0383000 *
1510.1351_6.854 rel_abund_log2 b1 b3 24 24 -2.422800 23 0.0237000 *
1510.1375_6.48 rel_abund_log2 b1 b3 24 24 2.602230 23 0.0159000 *
1510.1552_7.549 rel_abund_log2 b1 b3 24 24 -4.209539 23 0.0003340 ***
1511.123_7.922 rel_abund_log2 b1 b3 24 24 -3.277119 23 0.0033100 **
1511.145_6.854 rel_abund_log2 b1 b3 24 24 -3.576163 23 0.0016000 **
1512.1627_7.554 rel_abund_log2 b1 b3 24 24 -3.194264 23 0.0040300 **
1514.1517_7.514 rel_abund_log2 b1 b3 24 24 -4.487575 23 0.0001670 ***
1515.1602_7.514 rel_abund_log2 b1 b3 24 24 -2.480254 23 0.0209000 *
1518.2654_8.731 rel_abund_log2 b1 b3 24 24 3.360977 23 0.0027000 **
1520.1651_7.717 rel_abund_log2 b1 b3 24 24 5.422223 23 0.0000165 ****
1523.1825_7.536 rel_abund_log2 b1 b3 24 24 -2.710240 23 0.0125000 *
1524.1333_7.404 rel_abund_log2 b1 b3 24 24 -3.821564 23 0.0008750 ***
1526.0908_8.976 rel_abund_log2 b1 b3 24 24 -4.080666 23 0.0004600 ***
1526.1136_6.481 rel_abund_log2 b1 b3 24 24 -2.540820 23 0.0183000 *
1526.1519_7.532 rel_abund_log2 b1 b3 24 24 -2.772792 23 0.0108000 *
1527.094_8.977 rel_abund_log2 b1 b3 24 24 -4.184747 23 0.0003550 ***
1527.1556_7.532 rel_abund_log2 b1 b3 24 24 -2.552367 23 0.0178000 *
1530.1768_7.745 rel_abund_log2 b1 b3 24 24 2.278844 23 0.0323000 *
1531.1683_7.726 rel_abund_log2 b1 b3 24 24 2.165262 23 0.0410000 *
1531.181_7.771 rel_abund_log2 b1 b3 24 24 4.986523 23 0.0000482 ****
1531.2124_8.09 rel_abund_log2 b1 b3 24 24 -4.796455 23 0.0000773 ****
1531.6527_7.711 rel_abund_log2 b1 b3 24 24 3.751606 23 0.0010400 **
1532.1012_7.882 rel_abund_log2 b1 b3 24 24 -2.416722 23 0.0240000 *
1532.1582_7.713 rel_abund_log2 b1 b3 24 24 5.644479 23 0.0000096 ****
1534.154_7.527 rel_abund_log2 b1 b3 24 24 -4.409517 23 0.0002030 ***
1534.1768_8.083 rel_abund_log2 b1 b3 24 24 -2.730872 23 0.0119000 *
1535.1521_6.713 rel_abund_log2 b1 b3 24 24 -2.704900 23 0.0126000 *
1535.1558_7.533 rel_abund_log2 b1 b3 24 24 -4.421341 23 0.0001970 ***
1536.6252_6.856 rel_abund_log2 b1 b3 24 24 -2.973773 23 0.0068000 **
1537.1733_7.573 rel_abund_log2 b1 b3 24 24 -2.831065 23 0.0094700 **
1538.1135_7.026 rel_abund_log2 b1 b3 24 24 2.609268 23 0.0157000 *
1538.1514_7.472 rel_abund_log2 b1 b3 24 24 -4.926246 23 0.0000560 ****
1540.1625_7.542 rel_abund_log2 b1 b3 24 24 -3.046579 23 0.0057300 **
1540.1703_7.761 rel_abund_log2 b1 b3 24 24 -3.709767 23 0.0011500 **
1541.1773_7.535 rel_abund_log2 b1 b3 24 24 -3.532959 23 0.0017800 **
1541.1852_7.515 rel_abund_log2 b1 b3 24 24 -3.334909 23 0.0028800 **
1542.1448_7.703 rel_abund_log2 b1 b3 24 24 4.085352 23 0.0004550 ***
1542.1805_8.073 rel_abund_log2 b1 b3 24 24 -2.170637 23 0.0405000 *
1542.2142_6.931 rel_abund_log2 b1 b3 24 24 -2.557678 23 0.0176000 *
1542.645_7.698 rel_abund_log2 b1 b3 24 24 3.478004 23 0.0020300 **
1543.1481_7.702 rel_abund_log2 b1 b3 24 24 4.093289 23 0.0004460 ***
1543.2104_7.94 rel_abund_log2 b1 b3 24 24 -4.058835 23 0.0004860 ***
1544.1542_7.691 rel_abund_log2 b1 b3 24 24 2.533647 23 0.0186000 *
1544.1549_7.686 rel_abund_log2 b1 b3 24 24 3.211538 23 0.0038700 **
1544.1615_7.508 rel_abund_log2 b1 b3 24 24 -2.584622 23 0.0166000 *
1545.1606_7.669 rel_abund_log2 b1 b3 24 24 2.228903 23 0.0359000 *
1546.1714_7.763 rel_abund_log2 b1 b3 24 24 4.632757 23 0.0001160 ***
1546.1749_7.78 rel_abund_log2 b1 b3 24 24 4.877684 23 0.0000632 ****
1546.1772_8.02 rel_abund_log2 b1 b3 24 24 3.140138 23 0.0045900 **
1547.1793_7.789 rel_abund_log2 b1 b3 24 24 3.959732 23 0.0006220 ***
1547.1803_7.856 rel_abund_log2 b1 b3 24 24 4.958637 23 0.0000517 ****
1547.1806_8.02 rel_abund_log2 b1 b3 24 24 3.952200 23 0.0006330 ***
1548.0963_7.222 rel_abund_log2 b1 b3 24 24 -2.391455 23 0.0254000 *
1550.1138_6.449 rel_abund_log2 b1 b3 24 24 -3.521698 23 0.0018300 **
1550.1462_7.021 rel_abund_log2 b1 b3 24 24 3.059126 23 0.0055600 **
1550.1483_7.401 rel_abund_log2 b1 b3 24 24 -4.997849 23 0.0000469 ****
1554.1833_7.701 rel_abund_log2 b1 b3 24 24 2.829459 23 0.0095000 **
1557.1328_6.71 rel_abund_log2 b1 b3 24 24 -3.139848 23 0.0045900 **
1558.0818_8.319 rel_abund_log2 b1 b3 24 24 -2.471428 23 0.0213000 *
1558.1201_7.783 rel_abund_log2 b1 b3 24 24 -4.103167 23 0.0004350 ***
1558.1357_6.713 rel_abund_log2 b1 b3 24 24 -3.797247 23 0.0009300 ***
1560.2277_8.857 rel_abund_log2 b1 b3 24 24 2.367304 23 0.0267000 *
1561.1392_7.955 rel_abund_log2 b1 b3 24 24 -3.441087 23 0.0022300 **
1561.2317_8.857 rel_abund_log2 b1 b3 24 24 2.615576 23 0.0155000 *
1562.1488_7.418 rel_abund_log2 b1 b3 24 24 -6.882982 23 0.0000005 ****
1562.1493_7.418 rel_abund_log2 b1 b3 24 24 -4.647452 23 0.0001120 ***
1563.1166_6.865 rel_abund_log2 b1 b3 24 24 2.570533 23 0.0171000 *
1563.1535_7.418 rel_abund_log2 b1 b3 24 24 -8.727794 23 0.0000000 ****
1563.2185_8.966 rel_abund_log2 b1 b3 24 24 -5.915555 23 0.0000050 ****
1564.1347_6.888 rel_abund_log2 b1 b3 24 24 -3.034352 23 0.0058900 **
1564.1662_7.508 rel_abund_log2 b1 b3 24 24 -5.217058 23 0.0000273 ****
1565.1315_7.095 rel_abund_log2 b1 b3 24 24 2.163874 23 0.0411000 *
1566.1816_7.932 rel_abund_log2 b1 b3 24 24 -3.863905 23 0.0007880 ***
1566.2163_6.888 rel_abund_log2 b1 b3 24 24 -2.853777 23 0.0089800 **
1566.6417_7.129 rel_abund_log2 b1 b3 24 24 2.273569 23 0.0326000 *
1567.1909_7.931 rel_abund_log2 b1 b3 24 24 -3.230999 23 0.0036900 **
1569.2427_7.289 rel_abund_log2 b1 b3 24 24 -2.119620 23 0.0450000 *
1572.1304_7.394 rel_abund_log2 b1 b3 24 24 -4.706589 23 0.0000967 ****
1574.1454_7.378 rel_abund_log2 b1 b3 24 24 -4.847714 23 0.0000681 ****
1574.2638_8.923 rel_abund_log2 b1 b3 24 24 5.074105 23 0.0000388 ****
1574.6139_6.862 rel_abund_log2 b1 b3 24 24 2.147372 23 0.0425000 *
1576.1618_7.678 rel_abund_log2 b1 b3 24 24 -2.162281 23 0.0412000 *
1577.1679_7.401 rel_abund_log2 b1 b3 24 24 -2.943901 23 0.0072900 **
1578.1423_7.058 rel_abund_log2 b1 b3 24 24 -2.991713 23 0.0065200 **
1578.1434_7.057 rel_abund_log2 b1 b3 24 24 -3.156550 23 0.0044100 **
1578.178_7.924 rel_abund_log2 b1 b3 24 24 -4.009421 23 0.0005500 ***
1579.1825_7.633 rel_abund_log2 b1 b3 24 24 -2.464135 23 0.0216000 *
1579.649_7.139 rel_abund_log2 b1 b3 24 24 3.878030 23 0.0007610 ***
1579.6508_7.286 rel_abund_log2 b1 b3 24 24 -2.277585 23 0.0324000 *
1580.1032_7.792 rel_abund_log2 b1 b3 24 24 -5.178222 23 0.0000300 ****
1580.1526_7.144 rel_abund_log2 b1 b3 24 24 2.367702 23 0.0267000 *
1580.159_7.285 rel_abund_log2 b1 b3 24 24 -3.354848 23 0.0027400 **
1581.1632_7.283 rel_abund_log2 b1 b3 24 24 -2.908718 23 0.0079100 **
1581.2641_8.744 rel_abund_log2 b1 b3 24 24 -2.229460 23 0.0358000 *
1584.1871_8.061 rel_abund_log2 b1 b3 24 24 2.720274 23 0.0122000 *
1585.1303_6.711 rel_abund_log2 b1 b3 24 24 -2.343413 23 0.0281000 *
1585.2008_8.971 rel_abund_log2 b1 b3 24 24 -8.307335 23 0.0000000 ****
1586.1131_6.864 rel_abund_log2 b1 b3 24 24 -3.012202 23 0.0062100 **
1586.1251_6.718 rel_abund_log2 b1 b3 24 24 -2.076696 23 0.0492000 *
1586.2043_8.972 rel_abund_log2 b1 b3 24 24 -7.701546 23 0.0000001 ****
1588.1294_6.745 rel_abund_log2 b1 b3 24 24 -2.149570 23 0.0423000 *
1589.1303_6.863 rel_abund_log2 b1 b3 24 24 -2.663860 23 0.0139000 *
1590.1432_6.882 rel_abund_log2 b1 b3 24 24 -2.912075 23 0.0078500 **
1590.143_7.137 rel_abund_log2 b1 b3 24 24 3.131806 23 0.0046800 **
1590.144_7.285 rel_abund_log2 b1 b3 24 24 -2.694116 23 0.0130000 *
1590.1749_7.958 rel_abund_log2 b1 b3 24 24 -3.642208 23 0.0013600 **
1591.1476_7.288 rel_abund_log2 b1 b3 24 24 -2.150481 23 0.0423000 *
1591.1484_6.916 rel_abund_log2 b1 b3 24 24 -3.541557 23 0.0017400 **
1591.1826_7.956 rel_abund_log2 b1 b3 24 24 -5.690026 23 0.0000086 ****
1591.2114_7.764 rel_abund_log2 b1 b3 24 24 -3.657099 23 0.0013100 **
1592.1862_7.949 rel_abund_log2 b1 b3 24 24 -2.763217 23 0.0111000 *
1592.5935_6.867 rel_abund_log2 b1 b3 24 24 -3.258309 23 0.0034600 **
1596.1232_6.714 rel_abund_log2 b1 b3 24 24 -2.538043 23 0.0184000 *
1596.195_7.999 rel_abund_log2 b1 b3 24 24 -2.091554 23 0.0477000 *
1596.3093_9.895 rel_abund_log2 b1 b3 24 24 3.929112 23 0.0006710 ***
1596.6247_6.715 rel_abund_log2 b1 b3 24 24 -2.522720 23 0.0190000 *
1597.1201_6.716 rel_abund_log2 b1 b3 24 24 -2.716466 23 0.0123000 *
1597.2743_8.003 rel_abund_log2 b1 b3 24 24 -2.498598 23 0.0201000 *
1597.3131_9.894 rel_abund_log2 b1 b3 24 24 4.903024 23 0.0000593 ****
1598.1451_7.197 rel_abund_log2 b1 b3 24 24 -4.081485 23 0.0004590 ***
160.0606_0.629 rel_abund_log2 b1 b3 24 24 2.280060 23 0.0322000 *
1602.1428_8.354 rel_abund_log2 b1 b3 24 24 -3.064095 23 0.0055000 **
1604.1571_7.283 rel_abund_log2 b1 b3 24 24 -2.110723 23 0.0459000 *
1604.1937_7.739 rel_abund_log2 b1 b3 24 24 -2.840929 23 0.0092600 **
1604.1948_7.675 rel_abund_log2 b1 b3 24 24 -2.818001 23 0.0097600 **
1605.1979_7.674 rel_abund_log2 b1 b3 24 24 -4.717053 23 0.0000942 ****
1609.235_8.392 rel_abund_log2 b1 b3 24 24 -3.517983 23 0.0018500 **
1610.1103_6.827 rel_abund_log2 b1 b3 24 24 -3.104523 23 0.0049900 **
1610.32_9.892 rel_abund_log2 b1 b3 24 24 4.745850 23 0.0000877 ****
1611.1156_6.852 rel_abund_log2 b1 b3 24 24 -2.487472 23 0.0206000 *
1611.8348_9.901 rel_abund_log2 b1 b3 24 24 2.194757 23 0.0385000 *
1616.16_7.754 rel_abund_log2 b1 b3 24 24 -3.503055 23 0.0019100 **
1617.1626_7.754 rel_abund_log2 b1 b3 24 24 -4.091716 23 0.0004480 ***
1619.1782_7.285 rel_abund_log2 b1 b3 24 24 -2.651980 23 0.0142000 *
1619.2973_8.957 rel_abund_log2 b1 b3 24 24 3.002752 23 0.0063500 **
1621.1991_7.959 rel_abund_log2 b1 b3 24 24 -4.726045 23 0.0000921 ****
1621.2757_7.96 rel_abund_log2 b1 b3 24 24 -3.764232 23 0.0010100 **
1622.2784_7.959 rel_abund_log2 b1 b3 24 24 -2.933736 23 0.0074600 **
1623.2097_7.994 rel_abund_log2 b1 b3 24 24 -2.723922 23 0.0121000 *
1624.8418_9.901 rel_abund_log2 b1 b3 24 24 -3.025509 23 0.0060200 **
1625.2172_8.052 rel_abund_log2 b1 b3 24 24 -2.449572 23 0.0223000 *
1625.2283_8.396 rel_abund_log2 b1 b3 24 24 -2.094942 23 0.0474000 *
1629.2009_7.725 rel_abund_log2 b1 b3 24 24 -3.490260 23 0.0019700 **
1631.1866_7.959 rel_abund_log2 b1 b3 24 24 -3.710138 23 0.0011500 **
1631.6823_7.958 rel_abund_log2 b1 b3 24 24 -3.223911 23 0.0037600 **
1632.1881_7.956 rel_abund_log2 b1 b3 24 24 -3.243413 23 0.0035900 **
1635.8345_9.901 rel_abund_log2 b1 b3 24 24 -2.611712 23 0.0156000 *
1636.3352_9.901 rel_abund_log2 b1 b3 24 24 -2.388666 23 0.0255000 *
1637.3363_9.913 rel_abund_log2 b1 b3 24 24 -2.667212 23 0.0138000 *
1642.1751_7.953 rel_abund_log2 b1 b3 24 24 -3.249353 23 0.0035400 **
1643.1784_7.953 rel_abund_log2 b1 b3 24 24 -2.403435 23 0.0247000 *
1646.2057_7.997 rel_abund_log2 b1 b3 24 24 -4.233080 23 0.0003150 ***
1647.2105_8.001 rel_abund_log2 b1 b3 24 24 -3.601549 23 0.0015000 **
1648.2179_8.411 rel_abund_log2 b1 b3 24 24 -2.277230 23 0.0324000 *
1648.3413_9.902 rel_abund_log2 b1 b3 24 24 -3.915324 23 0.0006940 ***
1649.3444_10.225 rel_abund_log2 b1 b3 24 24 5.769806 23 0.0000071 ****
1649.3448_9.904 rel_abund_log2 b1 b3 24 24 -4.781220 23 0.0000803 ****
1676.3968_11.262 rel_abund_log2 b1 b3 24 24 -2.526704 23 0.0188000 *
1677.4008_11.264 rel_abund_log2 b1 b3 24 24 -2.972988 23 0.0068100 **
1678.4082_11.291 rel_abund_log2 b1 b3 24 24 -2.118481 23 0.0452000 *
1681.1596_8.548 rel_abund_log2 b1 b3 24 24 -2.622537 23 0.0152000 *
188.0707_0.633 rel_abund_log2 b1 b3 24 24 2.603118 23 0.0159000 *
205.1221_0.621 rel_abund_log2 b1 b3 24 24 6.217807 23 0.0000024 ****
235.0925_0.646 rel_abund_log2 b1 b3 24 24 -3.720003 23 0.0011200 **
247.1441_0.636 rel_abund_log2 b1 b3 24 24 2.367875 23 0.0267000 *
286.1437_1.13 rel_abund_log2 b1 b3 24 24 -7.290922 23 0.0000002 ****
286.2013_0.633 rel_abund_log2 b1 b3 24 24 -2.802545 23 0.0101000 *
293.0984_0.628 rel_abund_log2 b1 b3 24 24 3.331508 23 0.0029000 **
308.1855_0.633 rel_abund_log2 b1 b3 24 24 -16.437607 23 0.0000000 ****
310.2012_0.633 rel_abund_log2 b1 b3 24 24 -2.914449 23 0.0078100 **
312.1597_1.413 rel_abund_log2 b1 b3 24 24 -8.957805 23 0.0000000 ****
315.0805_0.637 rel_abund_log2 b1 b3 24 24 2.648465 23 0.0144000 *
316.2483_0.679 rel_abund_log2 b1 b3 24 24 2.948590 23 0.0072100 **
316.2608_0.679 rel_abund_log2 b1 b3 24 24 3.047546 23 0.0057100 **
328.2481_0.675 rel_abund_log2 b1 b3 24 24 2.668168 23 0.0137000 *
331.0535_0.634 rel_abund_log2 b1 b3 24 24 4.216703 23 0.0003280 ***
332.243_0.64 rel_abund_log2 b1 b3 24 24 2.307170 23 0.0304000 *
337.1048_1.268 rel_abund_log2 b1 b3 24 24 -2.636525 23 0.0147000 *
342.2638_0.69 rel_abund_log2 b1 b3 24 24 2.163273 23 0.0412000 *
344.2792_0.693 rel_abund_log2 b1 b3 24 24 2.778688 23 0.0107000 *
344.2793_0.927 rel_abund_log2 b1 b3 24 24 4.151382 23 0.0003860 ***
353.0342_0.629 rel_abund_log2 b1 b3 24 24 2.102531 23 0.0467000 *
370.3549_12.075 rel_abund_log2 b1 b3 24 24 -2.965691 23 0.0069300 **
373.2483_1.147 rel_abund_log2 b1 b3 24 24 -7.031820 23 0.0000004 ****
398.3413_0.639 rel_abund_log2 b1 b3 24 24 -2.567322 23 0.0172000 *
426.3575_2.274 rel_abund_log2 b1 b3 24 24 2.997835 23 0.0064200 **
428.3732_2.759 rel_abund_log2 b1 b3 24 24 2.417857 23 0.0239000 *
438.2976_3.525 rel_abund_log2 b1 b3 24 24 -2.120010 23 0.0450000 *
464.1914_0.656 rel_abund_log2 b1 b3 24 24 -6.229234 23 0.0000024 ****
466.3289_4.123 rel_abund_log2 b1 b3 24 24 -2.428781 23 0.0234000 *
478.2926_2.855 rel_abund_log2 b1 b3 24 24 2.194570 23 0.0386000 *
480.3082_3.357 rel_abund_log2 b1 b3 24 24 5.578923 23 0.0000112 ****
480.3446_3.381 rel_abund_log2 b1 b3 24 24 -2.410227 23 0.0243000 *
482.3238_2.701 rel_abund_log2 b1 b3 24 24 -2.087248 23 0.0481000 *
502.2902_3.355 rel_abund_log2 b1 b3 24 24 4.551643 23 0.0001420 ***
510.3551_3.445 rel_abund_log2 b1 b3 24 24 -3.566915 23 0.0016400 **
520.3416_2.737 rel_abund_log2 b1 b3 24 24 2.398232 23 0.0250000 *
521.4196_4.236 rel_abund_log2 b1 b3 24 24 2.826986 23 0.0095600 **
522.3564_3.24 rel_abund_log2 b1 b3 24 24 5.214196 23 0.0000275 ****
526.2644_1.714 rel_abund_log2 b1 b3 24 24 -11.468413 23 0.0000000 ****
534.2952_3.067 rel_abund_log2 b1 b3 24 24 3.084023 23 0.0052400 **
536.437_11.201 rel_abund_log2 b1 b3 24 24 -3.162134 23 0.0043500 **
538.3859_4.051 rel_abund_log2 b1 b3 24 24 -4.047270 23 0.0005000 ***
542.3237_2.234 rel_abund_log2 b1 b3 24 24 2.224065 23 0.0362000 *
543.4017_4.622 rel_abund_log2 b1 b3 24 24 2.657994 23 0.0141000 *
544.3374_3.238 rel_abund_log2 b1 b3 24 24 4.532066 23 0.0001490 ***
550.3862_3.859 rel_abund_log2 b1 b3 24 24 3.398101 23 0.0024700 **
552.4018_4.301 rel_abund_log2 b1 b3 24 24 3.766431 23 0.0010000 ***
563.4268_4.262 rel_abund_log2 b1 b3 24 24 2.448703 23 0.0224000 *
563.4273_4.415 rel_abund_log2 b1 b3 24 24 4.228972 23 0.0003180 ***
577.5185_8.358 rel_abund_log2 b1 b3 24 24 6.183781 23 0.0000026 ****
578.3923_2.734 rel_abund_log2 b1 b3 24 24 2.722901 23 0.0121000 *
593.4757_4.54 rel_abund_log2 b1 b3 24 24 7.906852 23 0.0000001 ****
593.4762_4.644 rel_abund_log2 b1 b3 24 24 7.988658 23 0.0000000 ****
593.4768_4.312 rel_abund_log2 b1 b3 24 24 5.055884 23 0.0000406 ****
595.4929_4.645 rel_abund_log2 b1 b3 24 24 9.813731 23 0.0000000 ****
596.4154_4.906 rel_abund_log2 b1 b3 24 24 -10.077684 23 0.0000000 ****
597.5086_5.242 rel_abund_log2 b1 b3 24 24 6.156187 23 0.0000028 ****
605.5497_9.629 rel_abund_log2 b1 b3 24 24 7.859590 23 0.0000001 ****
608.4637_5.649 rel_abund_log2 b1 b3 24 24 3.282429 23 0.0032700 **
610.431_5.16 rel_abund_log2 b1 b3 24 24 -5.356891 23 0.0000193 ****
610.5401_9.655 rel_abund_log2 b1 b3 24 24 -3.174643 23 0.0042300 **
610.5401_9.784 rel_abund_log2 b1 b3 24 24 -3.502733 23 0.0019200 **
617.4748_4.643 rel_abund_log2 b1 b3 24 24 5.608265 23 0.0000105 ****
619.4811_4.462 rel_abund_log2 b1 b3 24 24 2.898692 23 0.0081000 **
619.4903_4.953 rel_abund_log2 b1 b3 24 24 11.942170 23 0.0000000 ****
620.5974_10.522 rel_abund_log2 b1 b3 24 24 3.170782 23 0.0042700 **
622.6132_10.675 rel_abund_log2 b1 b3 24 24 3.593438 23 0.0015300 **
623.1355_0.614 rel_abund_log2 b1 b3 24 24 3.290977 23 0.0032000 **
629.1522_0.633 rel_abund_log2 b1 b3 24 24 4.249145 23 0.0003030 ***
634.5399_9.061 rel_abund_log2 b1 b3 24 24 -5.462883 23 0.0000149 ****
634.54_8.941 rel_abund_log2 b1 b3 24 24 -6.552931 23 0.0000011 ****
636.5558_9.845 rel_abund_log2 b1 b3 24 24 -2.504311 23 0.0198000 *
636.5558_9.995 rel_abund_log2 b1 b3 24 24 -2.532135 23 0.0186000 *
642.6107_12.077 rel_abund_log2 b1 b3 24 24 -3.088146 23 0.0051900 **
643.38_0.69 rel_abund_log2 b1 b3 24 24 -4.570304 23 0.0001360 ***
645.1222_0.627 rel_abund_log2 b1 b3 24 24 2.588628 23 0.0164000 *
646.6126_10.526 rel_abund_log2 b1 b3 24 24 -2.759588 23 0.0112000 *
650.6449_10.83 rel_abund_log2 b1 b3 24 24 5.110892 23 0.0000354 ****
652.6596_10.839 rel_abund_log2 b1 b3 24 24 4.025044 23 0.0005290 ***
661.5282_5.288 rel_abund_log2 b1 b3 24 24 -2.873648 23 0.0085800 **
664.6011_11.668 rel_abund_log2 b1 b3 24 24 -2.523831 23 0.0190000 *
673.5905_11.756 rel_abund_log2 b1 b3 24 24 -3.365534 23 0.0026700 **
677.5586_5.973 rel_abund_log2 b1 b3 24 24 -3.010173 23 0.0062400 **
690.6188_11.754 rel_abund_log2 b1 b3 24 24 -4.290100 23 0.0002730 ***
691.5742_6.403 rel_abund_log2 b1 b3 24 24 -4.030814 23 0.0005210 ***
692.5581_7.191 rel_abund_log2 b1 b3 24 24 -2.417265 23 0.0240000 *
692.6335_11.899 rel_abund_log2 b1 b3 24 24 -4.190548 23 0.0003500 ***
693.6368_11.899 rel_abund_log2 b1 b3 24 24 -4.478096 23 0.0001710 ***
695.5093_5.094 rel_abund_log2 b1 b3 24 24 -3.337246 23 0.0028600 **
695.5729_11.772 rel_abund_log2 b1 b3 24 24 -3.198892 23 0.0039900 **
700.5274_7.902 rel_abund_log2 b1 b3 24 24 -2.584647 23 0.0166000 *
704.3938_6.501 rel_abund_log2 b1 b3 24 24 2.541497 23 0.0182000 *
715.5745_6.252 rel_abund_log2 b1 b3 24 24 -2.354525 23 0.0275000 *
717.5903_6.828 rel_abund_log2 b1 b3 24 24 -3.245767 23 0.0035700 **
717.5903_7.018 rel_abund_log2 b1 b3 24 24 -5.391203 23 0.0000178 ****
718.5742_8.138 rel_abund_log2 b1 b3 24 24 -3.785746 23 0.0009560 ***
718.5934_7.015 rel_abund_log2 b1 b3 24 24 -4.179711 23 0.0003600 ***
719.6006_7.392 rel_abund_log2 b1 b3 24 24 -5.406821 23 0.0000171 ****
720.5532_7.039 rel_abund_log2 b1 b3 24 24 -2.965205 23 0.0069300 **
720.5897_8.289 rel_abund_log2 b1 b3 24 24 -2.533306 23 0.0186000 *
724.5277_7.806 rel_abund_log2 b1 b3 24 24 -3.923327 23 0.0006800 ***
726.5428_8.237 rel_abund_log2 b1 b3 24 24 -4.490765 23 0.0001660 ***
727.5745_6.067 rel_abund_log2 b1 b3 24 24 -4.036529 23 0.0005140 ***
729.5912_6.714 rel_abund_log2 b1 b3 24 24 -3.080356 23 0.0052900 **
731.6047_7.112 rel_abund_log2 b1 b3 24 24 -2.382030 23 0.0259000 *
731.6073_7.511 rel_abund_log2 b1 b3 24 24 -2.165599 23 0.0410000 *
732.589_8.53 rel_abund_log2 b1 b3 24 24 -4.746367 23 0.0000876 ****
733.6212_7.929 rel_abund_log2 b1 b3 24 24 -3.413026 23 0.0023800 **
733.6215_7.929 rel_abund_log2 b1 b3 24 24 -3.397073 23 0.0024800 **
738.543_8.181 rel_abund_log2 b1 b3 24 24 -6.051597 23 0.0000036 ****
740.5559_8.156 rel_abund_log2 b1 b3 24 24 -3.459299 23 0.0021300 **
740.5626_6.841 rel_abund_log2 b1 b3 24 24 -3.029450 23 0.0059600 **
740.5662_6.833 rel_abund_log2 b1 b3 24 24 -2.878694 23 0.0084800 **
742.5377_7.462 rel_abund_log2 b1 b3 24 24 2.427332 23 0.0234000 *
742.5718_8.28 rel_abund_log2 b1 b3 24 24 -3.450239 23 0.0021800 **
742.5753_7.523 rel_abund_log2 b1 b3 24 24 -4.598655 23 0.0001270 ***
743.6054_7.227 rel_abund_log2 b1 b3 24 24 -6.536167 23 0.0000011 ****
744.5538_6.51 rel_abund_log2 b1 b3 24 24 -2.595662 23 0.0162000 *
745.6202_7.852 rel_abund_log2 b1 b3 24 24 -5.066454 23 0.0000396 ****
745.6214_8.115 rel_abund_log2 b1 b3 24 24 -4.271424 23 0.0002860 ***
746.5091_7.814 rel_abund_log2 b1 b3 24 24 -4.223404 23 0.0003230 ***
746.5685_9.239 rel_abund_log2 b1 b3 24 24 4.042711 23 0.0005060 ***
746.6055_8.435 rel_abund_log2 b1 b3 24 24 2.340698 23 0.0283000 *
748.5258_8.233 rel_abund_log2 b1 b3 24 24 -4.359582 23 0.0002300 ***
748.5844_7.89 rel_abund_log2 b1 b3 24 24 -2.401847 23 0.0248000 *
748.5844_8.099 rel_abund_log2 b1 b3 24 24 -2.680982 23 0.0133000 *
749.5557_6.066 rel_abund_log2 b1 b3 24 24 -4.229408 23 0.0003180 ***
751.5717_6.812 rel_abund_log2 b1 b3 24 24 -2.256005 23 0.0339000 *
752.5592_8.969 rel_abund_log2 b1 b3 24 24 -3.382002 23 0.0025700 **
752.5594_8.973 rel_abund_log2 b1 b3 24 24 -4.160124 23 0.0003780 ***
752.574_6.803 rel_abund_log2 b1 b3 24 24 -2.290898 23 0.0315000 *
754.5356_6.825 rel_abund_log2 b1 b3 24 24 2.336753 23 0.0285000 *
754.5373_6.002 rel_abund_log2 b1 b3 24 24 -2.240912 23 0.0350000 *
755.6054_6.838 rel_abund_log2 b1 b3 24 24 -5.047160 23 0.0000415 ****
756.5542_6.373 rel_abund_log2 b1 b3 24 24 -2.143416 23 0.0429000 *
756.5904_7.889 rel_abund_log2 b1 b3 24 24 -3.993224 23 0.0005720 ***
759.0903_6.983 rel_abund_log2 b1 b3 24 24 2.230457 23 0.0358000 *
759.1221_6.983 rel_abund_log2 b1 b3 24 24 2.071162 23 0.0497000 *
759.6382_8.714 rel_abund_log2 b1 b3 24 24 2.984600 23 0.0066300 **
760.421_6.983 rel_abund_log2 b1 b3 24 24 2.208938 23 0.0374000 *
760.5281_6.984 rel_abund_log2 b1 b3 24 24 2.323924 23 0.0293000 *
760.5329_6.983 rel_abund_log2 b1 b3 24 24 2.199625 23 0.0382000 *
760.5459_7.719 rel_abund_log2 b1 b3 24 24 2.731704 23 0.0119000 *
760.5883_7.719 rel_abund_log2 b1 b3 24 24 6.570374 23 0.0000010 ****
760.9763_7.718 rel_abund_log2 b1 b3 24 24 3.014294 23 0.0061800 **
761.1927_7.717 rel_abund_log2 b1 b3 24 24 4.061529 23 0.0004830 ***
761.2595_7.716 rel_abund_log2 b1 b3 24 24 4.448148 23 0.0001840 ***
761.302_7.716 rel_abund_log2 b1 b3 24 24 5.333808 23 0.0000205 ****
761.3174_7.717 rel_abund_log2 b1 b3 24 24 4.594537 23 0.0001280 ***
761.329_7.717 rel_abund_log2 b1 b3 24 24 4.360148 23 0.0002290 ***
761.3681_7.718 rel_abund_log2 b1 b3 24 24 5.382642 23 0.0000181 ****
761.3781_7.717 rel_abund_log2 b1 b3 24 24 4.262833 23 0.0002920 ***
761.4062_7.717 rel_abund_log2 b1 b3 24 24 4.155622 23 0.0003820 ***
761.4141_7.718 rel_abund_log2 b1 b3 24 24 4.068197 23 0.0004750 ***
761.4437_7.717 rel_abund_log2 b1 b3 24 24 3.847667 23 0.0008210 ***
761.4545_7.719 rel_abund_log2 b1 b3 24 24 5.045915 23 0.0000416 ****
761.5191_7.716 rel_abund_log2 b1 b3 24 24 5.181053 23 0.0000298 ****
761.6526_9.142 rel_abund_log2 b1 b3 24 24 -2.572100 23 0.0170000 *
762.5032_7.719 rel_abund_log2 b1 b3 24 24 5.594865 23 0.0000108 ****
762.5251_7.716 rel_abund_log2 b1 b3 24 24 4.103061 23 0.0004350 ***
762.5433_7.717 rel_abund_log2 b1 b3 24 24 4.808430 23 0.0000751 ****
762.6465_8.683 rel_abund_log2 b1 b3 24 24 2.432602 23 0.0232000 *
764.5195_7.458 rel_abund_log2 b1 b3 24 24 3.959266 23 0.0006220 ***
764.5566_7.52 rel_abund_log2 b1 b3 24 24 -2.584565 23 0.0166000 *
766.5713_8.323 rel_abund_log2 b1 b3 24 24 3.619641 23 0.0014400 **
766.5755_7.417 rel_abund_log2 b1 b3 24 24 -7.049141 23 0.0000004 ****
768.5536_6.434 rel_abund_log2 b1 b3 24 24 -4.786474 23 0.0000793 ****
768.5859_8.446 rel_abund_log2 b1 b3 24 24 2.669412 23 0.0137000 *
768.587_8.451 rel_abund_log2 b1 b3 24 24 4.336779 23 0.0002430 ***
768.5909_7.579 rel_abund_log2 b1 b3 24 24 -2.080306 23 0.0488000 *
770.0615_7.009 rel_abund_log2 b1 b3 24 24 2.098340 23 0.0471000 *
770.5691_6.825 rel_abund_log2 b1 b3 24 24 -3.361826 23 0.0027000 **
770.6056_8.664 rel_abund_log2 b1 b3 24 24 -2.680076 23 0.0134000 *
771.5762_7.712 rel_abund_log2 b1 b3 24 24 4.527700 23 0.0001510 ***
771.6366_8.357 rel_abund_log2 b1 b3 24 24 -3.325112 23 0.0029500 **
772.5245_7.894 rel_abund_log2 b1 b3 24 24 -2.574640 23 0.0169000 *
772.5855_7.501 rel_abund_log2 b1 b3 24 24 -2.724478 23 0.0121000 *
772.6196_8.643 rel_abund_log2 b1 b3 24 24 3.422807 23 0.0023300 **
773.6516_9.025 rel_abund_log2 b1 b3 24 24 -6.643316 23 0.0000009 ****
774.5401_8.626 rel_abund_log2 b1 b3 24 24 -2.205703 23 0.0377000 *
774.5404_8.982 rel_abund_log2 b1 b3 24 24 -3.863682 23 0.0007890 ***
775.6384_6.825 rel_abund_log2 b1 b3 24 24 3.151765 23 0.0044600 **
775.6661_9.814 rel_abund_log2 b1 b3 24 24 -4.487832 23 0.0001670 ***
776.579_6.552 rel_abund_log2 b1 b3 24 24 2.408966 23 0.0244000 *
778.5355_6.376 rel_abund_log2 b1 b3 24 24 -2.088578 23 0.0480000 *
778.5376_5.842 rel_abund_log2 b1 b3 24 24 -2.703411 23 0.0127000 *
780.5519_6.84 rel_abund_log2 b1 b3 24 24 3.042888 23 0.0057800 **
780.5921_7.79 rel_abund_log2 b1 b3 24 24 -6.265133 23 0.0000022 ****
781.6192_8.718 rel_abund_log2 b1 b3 24 24 4.235728 23 0.0003130 ***
781.62_7.043 rel_abund_log2 b1 b3 24 24 -6.462174 23 0.0000014 ****
783.2313_6.877 rel_abund_log2 b1 b3 24 24 -2.424275 23 0.0236000 *
783.332_6.875 rel_abund_log2 b1 b3 24 24 -2.224280 23 0.0362000 *
783.3522_6.877 rel_abund_log2 b1 b3 24 24 -2.317622 23 0.0297000 *
783.4174_6.877 rel_abund_log2 b1 b3 24 24 -2.332307 23 0.0288000 *
783.5024_6.875 rel_abund_log2 b1 b3 24 24 -2.393950 23 0.0252000 *
783.6251_8.708 rel_abund_log2 b1 b3 24 24 2.420702 23 0.0238000 *
783.6368_7.847 rel_abund_log2 b1 b3 24 24 -6.635750 23 0.0000009 ****
784.5879_7.141 rel_abund_log2 b1 b3 24 24 3.588251 23 0.0015500 **
784.6308_6.874 rel_abund_log2 b1 b3 24 24 -2.276756 23 0.0324000 *
784.6654_10.38 rel_abund_log2 b1 b3 24 24 5.641168 23 0.0000097 ****
784.779_6.877 rel_abund_log2 b1 b3 24 24 -3.094526 23 0.0051100 **
784.7847_6.875 rel_abund_log2 b1 b3 24 24 -2.543744 23 0.0181000 *
785.0064_6.878 rel_abund_log2 b1 b3 24 24 -2.729866 23 0.0119000 *
785.0201_6.879 rel_abund_log2 b1 b3 24 24 -3.162337 23 0.0043500 **
785.0389_6.88 rel_abund_log2 b1 b3 24 24 -3.229424 23 0.0037100 **
785.452_7.291 rel_abund_log2 b1 b3 24 24 -2.114521 23 0.0455000 *
785.5792_6.874 rel_abund_log2 b1 b3 24 24 -2.996845 23 0.0064400 **
785.6536_8.747 rel_abund_log2 b1 b3 24 24 -4.369686 23 0.0002240 ***
785.6542_8.953 rel_abund_log2 b1 b3 24 24 4.422767 23 0.0001960 ***
786.5814_6.876 rel_abund_log2 b1 b3 24 24 -2.989887 23 0.0065400 **
786.6508_7.289 rel_abund_log2 b1 b3 24 24 -2.150284 23 0.0423000 *
787.6674_9.202 rel_abund_log2 b1 b3 24 24 -7.596889 23 0.0000001 ****
787.6701_9.896 rel_abund_log2 b1 b3 24 24 4.203944 23 0.0003390 ***
788.5563_7.415 rel_abund_log2 b1 b3 24 24 -6.322305 23 0.0000019 ****
788.6177_8.867 rel_abund_log2 b1 b3 24 24 3.585064 23 0.0015700 **
789.6837_10.343 rel_abund_log2 b1 b3 24 24 -2.421797 23 0.0237000 *
790.5352_6.424 rel_abund_log2 b1 b3 24 24 -2.996956 23 0.0064400 **
790.5744_7.193 rel_abund_log2 b1 b3 24 24 -4.718453 23 0.0000939 ****
791.5397_6.411 rel_abund_log2 b1 b3 24 24 -2.481984 23 0.0208000 *
791.5433_6.743 rel_abund_log2 b1 b3 24 24 2.075631 23 0.0493000 *
792.5512_6.827 rel_abund_log2 b1 b3 24 24 -2.311696 23 0.0301000 *
792.5531_6.261 rel_abund_log2 b1 b3 24 24 -3.837824 23 0.0008410 ***
792.5873_8.665 rel_abund_log2 b1 b3 24 24 -2.389761 23 0.0254000 *
792.5893_7.058 rel_abund_log2 b1 b3 24 24 3.618491 23 0.0014400 **
792.5899_7.556 rel_abund_log2 b1 b3 24 24 -3.410582 23 0.0024000 **
793.556_6.829 rel_abund_log2 b1 b3 24 24 -2.157729 23 0.0416000 *
794.5862_7.544 rel_abund_log2 b1 b3 24 24 -3.761681 23 0.0010100 **
794.6054_8.214 rel_abund_log2 b1 b3 24 24 -4.139427 23 0.0003980 ***
794.6057_8.544 rel_abund_log2 b1 b3 24 24 -3.307904 23 0.0030700 **
794.6868_10.627 rel_abund_log2 b1 b3 24 24 2.338175 23 0.0284000 *
796.5222_9.007 rel_abund_log2 b1 b3 24 24 -3.369938 23 0.0026400 **
796.5247_6.843 rel_abund_log2 b1 b3 24 24 2.690673 23 0.0131000 *
796.5845_7.27 rel_abund_log2 b1 b3 24 24 -4.361776 23 0.0002290 ***
796.5848_7.423 rel_abund_log2 b1 b3 24 24 -6.673861 23 0.0000008 ****
796.621_8.383 rel_abund_log2 b1 b3 24 24 -3.318646 23 0.0029900 **
797.6383_8.603 rel_abund_log2 b1 b3 24 24 -3.691394 23 0.0012100 **
797.6453_8.401 rel_abund_log2 b1 b3 24 24 -5.685006 23 0.0000087 ****
798.6003_7.83 rel_abund_log2 b1 b3 24 24 -5.036149 23 0.0000426 ****
798.6518_8.391 rel_abund_log2 b1 b3 24 24 -7.067732 23 0.0000003 ****
798.681_10.534 rel_abund_log2 b1 b3 24 24 -2.671838 23 0.0136000 *
799.6069_8.865 rel_abund_log2 b1 b3 24 24 3.592181 23 0.0015400 **
799.6686_9.32 rel_abund_log2 b1 b3 24 24 -5.905750 23 0.0000051 ****
800.5194_5.843 rel_abund_log2 b1 b3 24 24 -2.546655 23 0.0180000 *
800.5726_6.827 rel_abund_log2 b1 b3 24 24 2.221972 23 0.0364000 *
800.6163_8.637 rel_abund_log2 b1 b3 24 24 -2.574850 23 0.0169000 *
800.616_8.426 rel_abund_log2 b1 b3 24 24 -2.331423 23 0.0289000 *
802.5716_10.204 rel_abund_log2 b1 b3 24 24 -2.253884 23 0.0340000 *
802.5717_7.81 rel_abund_log2 b1 b3 24 24 -4.351264 23 0.0002350 ***
804.5876_8.154 rel_abund_log2 b1 b3 24 24 -2.460781 23 0.0218000 *
804.5937_7.544 rel_abund_log2 b1 b3 24 24 -3.908953 23 0.0007050 ***
805.0108_3.238 rel_abund_log2 b1 b3 24 24 4.366316 23 0.0002260 ***
805.6187_7.848 rel_abund_log2 b1 b3 24 24 -5.468388 23 0.0000147 ****
805.6784_9.291 rel_abund_log2 b1 b3 24 24 2.527828 23 0.0188000 *
806.5698_6.37 rel_abund_log2 b1 b3 24 24 -4.111588 23 0.0004260 ***
806.6235_6.835 rel_abund_log2 b1 b3 24 24 -2.233371 23 0.0355000 *
807.6349_8.948 rel_abund_log2 b1 b3 24 24 7.137075 23 0.0000003 ****
807.6359_7.483 rel_abund_log2 b1 b3 24 24 -4.981387 23 0.0000488 ****
808.6375_8.751 rel_abund_log2 b1 b3 24 24 -5.844611 23 0.0000059 ****
809.6507_9.876 rel_abund_log2 b1 b3 24 24 5.609443 23 0.0000104 ****
809.6525_8.065 rel_abund_log2 b1 b3 24 24 -6.163797 23 0.0000027 ****
810.5988_8.865 rel_abund_log2 b1 b3 24 24 3.838724 23 0.0008390 ***
810.6013_7.646 rel_abund_log2 b1 b3 24 24 -3.961716 23 0.0006190 ***
810.6041_7.959 rel_abund_log2 b1 b3 24 24 -4.014022 23 0.0005430 ***
810.6564_8.03 rel_abund_log2 b1 b3 24 24 -5.706567 23 0.0000082 ****
810.6812_10.387 rel_abund_log2 b1 b3 24 24 -3.748138 23 0.0010500 **
811.0052_7.959 rel_abund_log2 b1 b3 24 24 -3.522376 23 0.0018300 **
811.2977_7.959 rel_abund_log2 b1 b3 24 24 -4.502504 23 0.0001610 ***
811.3445_7.959 rel_abund_log2 b1 b3 24 24 -2.394706 23 0.0252000 *
811.4149_7.961 rel_abund_log2 b1 b3 24 24 -3.195496 23 0.0040200 **
811.4537_7.958 rel_abund_log2 b1 b3 24 24 -3.419826 23 0.0023400 **
811.5374_7.96 rel_abund_log2 b1 b3 24 24 -2.573407 23 0.0170000 *
811.6292_7.819 rel_abund_log2 b1 b3 24 24 -5.538839 23 0.0000124 ****
811.6598_8.009 rel_abund_log2 b1 b3 24 24 -2.305849 23 0.0305000 *
811.6703_8.961 rel_abund_log2 b1 b3 24 24 -4.376785 23 0.0002200 ***
812.5189_7.959 rel_abund_log2 b1 b3 24 24 -2.308736 23 0.0303000 *
812.545_7.958 rel_abund_log2 b1 b3 24 24 -2.883684 23 0.0083800 **
812.5561_7.198 rel_abund_log2 b1 b3 24 24 -4.275169 23 0.0002840 ***
812.615_8.136 rel_abund_log2 b1 b3 24 24 3.029457 23 0.0059600 **
812.6186_8.396 rel_abund_log2 b1 b3 24 24 -2.112807 23 0.0457000 *
812.6971_10.626 rel_abund_log2 b1 b3 24 24 2.168623 23 0.0407000 *
813.6106_7.959 rel_abund_log2 b1 b3 24 24 -3.531679 23 0.0017800 **
813.6834_9.437 rel_abund_log2 b1 b3 24 24 -8.493589 23 0.0000000 ****
813.6854_10.226 rel_abund_log2 b1 b3 24 24 4.436593 23 0.0001900 ***
813.6866_9.902 rel_abund_log2 b1 b3 24 24 -4.074265 23 0.0004680 ***
814.5355_8.122 rel_abund_log2 b1 b3 24 24 -2.265620 23 0.0332000 *
814.535_6.26 rel_abund_log2 b1 b3 24 24 -2.894771 23 0.0081700 **
814.6127_7.96 rel_abund_log2 b1 b3 24 24 -3.002326 23 0.0063600 **
814.6318_9.087 rel_abund_log2 b1 b3 24 24 -2.180895 23 0.0397000 *
815.5406_6.313 rel_abund_log2 b1 b3 24 24 -2.238198 23 0.0352000 *
815.6606_9.084 rel_abund_log2 b1 b3 24 24 -2.572207 23 0.0170000 *
815.7025_10.568 rel_abund_log2 b1 b3 24 24 4.832854 23 0.0000706 ****
816.5872_8.538 rel_abund_log2 b1 b3 24 24 -3.415475 23 0.0023700 **
816.5873_8.216 rel_abund_log2 b1 b3 24 24 -3.460704 23 0.0021200 **
816.7069_11.125 rel_abund_log2 b1 b3 24 24 -2.199425 23 0.0382000 *
817.7051_10.344 rel_abund_log2 b1 b3 24 24 -5.923167 23 0.0000049 ****
818.0604_6.711 rel_abund_log2 b1 b3 24 24 -2.271678 23 0.0328000 *
818.5668_7.42 rel_abund_log2 b1 b3 24 24 -4.392132 23 0.0002120 ***
818.6044_8.299 rel_abund_log2 b1 b3 24 24 -2.688770 23 0.0131000 *
818.6049_7.793 rel_abund_log2 b1 b3 24 24 -2.620256 23 0.0153000 *
819.5737_7.769 rel_abund_log2 b1 b3 24 24 -2.128848 23 0.0442000 *
820.5823_7.852 rel_abund_log2 b1 b3 24 24 -2.749020 23 0.0114000 *
820.5846_7.213 rel_abund_log2 b1 b3 24 24 -5.247673 23 0.0000253 ****
820.6202_7.907 rel_abund_log2 b1 b3 24 24 -3.816585 23 0.0008860 ***
820.6961_11.574 rel_abund_log2 b1 b3 24 24 -6.238175 23 0.0000023 ****
822.0921_7.956 rel_abund_log2 b1 b3 24 24 -2.212681 23 0.0371000 *
822.5404_7.148 rel_abund_log2 b1 b3 24 24 2.178981 23 0.0398000 *
822.5994_7.509 rel_abund_log2 b1 b3 24 24 -5.561911 23 0.0000117 ****
823.6064_8.398 rel_abund_log2 b1 b3 24 24 -2.592032 23 0.0163000 *
824.616_8.544 rel_abund_log2 b1 b3 24 24 -4.304151 23 0.0002640 ***
824.6527_9.167 rel_abund_log2 b1 b3 24 24 -2.284927 23 0.0319000 *
825.6241_9.886 rel_abund_log2 b1 b3 24 24 3.819372 23 0.0008800 ***
825.6473_7.81 rel_abund_log2 b1 b3 24 24 -3.890188 23 0.0007390 ***
825.6778_9.575 rel_abund_log2 b1 b3 24 24 -3.362008 23 0.0027000 **
825.6815_9.335 rel_abund_log2 b1 b3 24 24 -12.432634 23 0.0000000 ****
825.682_9.561 rel_abund_log2 b1 b3 24 24 -5.125960 23 0.0000341 ****
826.5348_5.993 rel_abund_log2 b1 b3 24 24 -2.489700 23 0.0205000 *
826.5716_8.868 rel_abund_log2 b1 b3 24 24 3.005861 23 0.0063000 **
827.663_8.483 rel_abund_log2 b1 b3 24 24 -6.887401 23 0.0000005 ****
827.6998_10.277 rel_abund_log2 b1 b3 24 24 -8.598528 23 0.0000000 ****
827.6999_10.389 rel_abund_log2 b1 b3 24 24 -5.648085 23 0.0000095 ****
827.6999_10.502 rel_abund_log2 b1 b3 24 24 -4.531562 23 0.0001500 ***
828.5511_6.373 rel_abund_log2 b1 b3 24 24 -4.196726 23 0.0003450 ***
828.6106_7.766 rel_abund_log2 b1 b3 24 24 -3.253698 23 0.0035000 **
828.702_10.497 rel_abund_log2 b1 b3 24 24 -3.880464 23 0.0007570 ***
829.6782_8.401 rel_abund_log2 b1 b3 24 24 -5.597191 23 0.0000107 ****
829.6788_9.393 rel_abund_log2 b1 b3 24 24 -2.082631 23 0.0486000 *
829.7155_10.657 rel_abund_log2 b1 b3 24 24 -2.961821 23 0.0069900 **
830.568_6.228 rel_abund_log2 b1 b3 24 24 -2.506941 23 0.0197000 *
830.6471_9.551 rel_abund_log2 b1 b3 24 24 -3.641332 23 0.0013600 **
831.6353_8.196 rel_abund_log2 b1 b3 24 24 -7.895269 23 0.0000001 ****
831.694_9.318 rel_abund_log2 b1 b3 24 24 -3.036217 23 0.0058700 **
832.5817_7.451 rel_abund_log2 b1 b3 24 24 2.726347 23 0.0120000 *
832.582_7.631 rel_abund_log2 b1 b3 24 24 -6.173864 23 0.0000027 ****
833.6507_8.971 rel_abund_log2 b1 b3 24 24 -3.321200 23 0.0029700 **
834.5987_8.394 rel_abund_log2 b1 b3 24 24 -3.513913 23 0.0018600 **
834.6002_7.257 rel_abund_log2 b1 b3 24 24 -6.625355 23 0.0000009 ****
834.602_7.751 rel_abund_log2 b1 b3 24 24 -3.454234 23 0.0021600 **
835.5327_7.555 rel_abund_log2 b1 b3 24 24 -2.163889 23 0.0411000 *
835.6566_8.968 rel_abund_log2 b1 b3 24 24 -2.400271 23 0.0249000 *
835.6663_8.407 rel_abund_log2 b1 b3 24 24 -4.447117 23 0.0001850 ***
835.6664_10.22 rel_abund_log2 b1 b3 24 24 5.234571 23 0.0000261 ****
835.6666_9.91 rel_abund_log2 b1 b3 24 24 -5.434559 23 0.0000160 ****
836.6136_9.086 rel_abund_log2 b1 b3 24 24 -2.358852 23 0.0272000 *
836.6148_8.439 rel_abund_log2 b1 b3 24 24 -3.124144 23 0.0047700 **
836.6167_8.053 rel_abund_log2 b1 b3 24 24 -2.099029 23 0.0470000 *
837.5477_8.363 rel_abund_log2 b1 b3 24 24 7.192337 23 0.0000003 ****
837.614_7.764 rel_abund_log2 b1 b3 24 24 -3.419908 23 0.0023400 **
837.6724_9.906 rel_abund_log2 b1 b3 24 24 -2.650800 23 0.0143000 *
837.6789_10.324 rel_abund_log2 b1 b3 24 24 -3.803712 23 0.0009150 ***
837.6818_10.567 rel_abund_log2 b1 b3 24 24 2.797581 23 0.0102000 *
837.6831_9.217 rel_abund_log2 b1 b3 24 24 -3.730008 23 0.0011000 **
838.6301_9.147 rel_abund_log2 b1 b3 24 24 2.610578 23 0.0156000 *
838.6321_8.779 rel_abund_log2 b1 b3 24 24 -3.243784 23 0.0035800 **
839.6989_10.178 rel_abund_log2 b1 b3 24 24 -4.180361 23 0.0003590 ***
840.5868_7.472 rel_abund_log2 b1 b3 24 24 2.394797 23 0.0252000 *
842.5663_7.213 rel_abund_log2 b1 b3 24 24 -3.461926 23 0.0021200 **
842.723_11.155 rel_abund_log2 b1 b3 24 24 -3.988176 23 0.0005790 ***
844.7397_11.265 rel_abund_log2 b1 b3 24 24 -3.789557 23 0.0009470 ***
846.6641_8.878 rel_abund_log2 b1 b3 24 24 3.066952 23 0.0054600 **
847.6893_7.716 rel_abund_log2 b1 b3 24 24 4.436797 23 0.0001900 ***
848.6521_9.028 rel_abund_log2 b1 b3 24 24 -7.790473 23 0.0000001 ****
849.6682_6.746 rel_abund_log2 b1 b3 24 24 2.947365 23 0.0072300 **
849.6939_11.262 rel_abund_log2 b1 b3 24 24 -3.006961 23 0.0062900 **
851.64_9.902 rel_abund_log2 b1 b3 24 24 -3.694864 23 0.0012000 **
852.5508_6.228 rel_abund_log2 b1 b3 24 24 -2.348131 23 0.0278000 *
852.6843_10.599 rel_abund_log2 b1 b3 24 24 2.423696 23 0.0236000 *
853.6786_8.974 rel_abund_log2 b1 b3 24 24 -3.907178 23 0.0007080 ***
853.6786_8.975 rel_abund_log2 b1 b3 24 24 -3.441902 23 0.0022200 **
854.574_8.362 rel_abund_log2 b1 b3 24 24 5.755834 23 0.0000073 ****
856.5819_7.24 rel_abund_log2 b1 b3 24 24 -5.296024 23 0.0000225 ****
856.5823_7.778 rel_abund_log2 b1 b3 24 24 -4.480786 23 0.0001700 ***
858.5914_7.792 rel_abund_log2 b1 b3 24 24 -4.482889 23 0.0001690 ***
858.5977_8.453 rel_abund_log2 b1 b3 24 24 -3.839074 23 0.0008380 ***
858.5992_7.06 rel_abund_log2 b1 b3 24 24 -4.422044 23 0.0001970 ***
858.7545_11.345 rel_abund_log2 b1 b3 24 24 -4.964898 23 0.0000509 ****
859.53_8.35 rel_abund_log2 b1 b3 24 24 8.289635 23 0.0000000 ****
859.6891_7.519 rel_abund_log2 b1 b3 24 24 -4.048987 23 0.0004980 ***
860.6131_9.152 rel_abund_log2 b1 b3 24 24 2.187421 23 0.0391000 *
860.6133_8.785 rel_abund_log2 b1 b3 24 24 -4.395073 23 0.0002100 ***
860.7704_11.477 rel_abund_log2 b1 b3 24 24 -2.620741 23 0.0153000 *
861.7048_7.713 rel_abund_log2 b1 b3 24 24 4.279419 23 0.0002810 ***
862.6306_8.44 rel_abund_log2 b1 b3 24 24 -2.115622 23 0.0454000 *
863.6838_8.874 rel_abund_log2 b1 b3 24 24 3.207465 23 0.0039100 **
863.7092_11.343 rel_abund_log2 b1 b3 24 24 -3.570092 23 0.0016200 **
863.7199_8.448 rel_abund_log2 b1 b3 24 24 2.201969 23 0.0380000 *
865.5795_9.626 rel_abund_log2 b1 b3 24 24 7.826774 23 0.0000001 ****
866.723_11.11 rel_abund_log2 b1 b3 24 24 -3.057584 23 0.0055800 **
868.7389_11.19 rel_abund_log2 b1 b3 24 24 -4.654187 23 0.0001100 ***
869.6734_6.444 rel_abund_log2 b1 b3 24 24 -2.123826 23 0.0447000 *
869.6738_6.894 rel_abund_log2 b1 b3 24 24 -2.665499 23 0.0138000 *
870.6336_9.039 rel_abund_log2 b1 b3 24 24 -5.900536 23 0.0000051 ****
870.7558_11.296 rel_abund_log2 b1 b3 24 24 -5.608460 23 0.0000104 ****
871.6776_11.111 rel_abund_log2 b1 b3 24 24 -3.323479 23 0.0029600 **
871.6892_7.141 rel_abund_log2 b1 b3 24 24 3.508699 23 0.0018900 **
872.6526_8.477 rel_abund_log2 b1 b3 24 24 -4.873664 23 0.0000638 ****
872.652_8.777 rel_abund_log2 b1 b3 24 24 -5.880113 23 0.0000054 ****
872.7324_11.418 rel_abund_log2 b1 b3 24 24 -2.282385 23 0.0320000 *
872.7731_11.418 rel_abund_log2 b1 b3 24 24 -5.209801 23 0.0000278 ****
873.7045_7.52 rel_abund_log2 b1 b3 24 24 -4.726576 23 0.0000920 ****
874.5538_7.197 rel_abund_log2 b1 b3 24 24 2.489022 23 0.0205000 *
874.6655_10.042 rel_abund_log2 b1 b3 24 24 -3.831711 23 0.0008540 ***
874.7461_11.559 rel_abund_log2 b1 b3 24 24 -2.256692 23 0.0338000 *
874.7892_11.559 rel_abund_log2 b1 b3 24 24 -2.341595 23 0.0282000 *
875.7095_11.292 rel_abund_log2 b1 b3 24 24 -5.684946 23 0.0000087 ****
875.7207_8.87 rel_abund_log2 b1 b3 24 24 3.517768 23 0.0018500 **
876.5695_7.88 rel_abund_log2 b1 b3 24 24 4.821973 23 0.0000726 ****
876.5697_8.13 rel_abund_log2 b1 b3 24 24 2.496049 23 0.0202000 *
876.6835_10.245 rel_abund_log2 b1 b3 24 24 -7.038953 23 0.0000004 ****
877.6374_9.86 rel_abund_log2 b1 b3 24 24 5.198234 23 0.0000286 ****
877.6374_9.988 rel_abund_log2 b1 b3 24 24 3.527718 23 0.0018000 **
877.7253_11.418 rel_abund_log2 b1 b3 24 24 2.447008 23 0.0225000 *
877.7_7.713 rel_abund_log2 b1 b3 24 24 3.888769 23 0.0007410 ***
878.5852_8.857 rel_abund_log2 b1 b3 24 24 3.678875 23 0.0012400 **
878.7033_7.717 rel_abund_log2 b1 b3 24 24 4.397711 23 0.0002090 ***
879.7408_11.578 rel_abund_log2 b1 b3 24 24 2.194336 23 0.0386000 *
880.718_11.248 rel_abund_log2 b1 b3 24 24 -4.376792 23 0.0002200 ***
881.6374_6.724 rel_abund_log2 b1 b3 24 24 -2.197603 23 0.0383000 *
883.6892_7.419 rel_abund_log2 b1 b3 24 24 -7.528574 23 0.0000001 ****
883.6894_6.894 rel_abund_log2 b1 b3 24 24 -3.529922 23 0.0017900 **
884.7697_11.358 rel_abund_log2 b1 b3 24 24 -4.637726 23 0.0001150 ***
886.7858_11.492 rel_abund_log2 b1 b3 24 24 -4.346488 23 0.0002370 ***
887.6837_6.371 rel_abund_log2 b1 b3 24 24 -2.069430 23 0.0499000 *
887.7201_8.662 rel_abund_log2 b1 b3 24 24 -2.531450 23 0.0187000 *
889.6375_9.586 rel_abund_log2 b1 b3 24 24 -2.249721 23 0.0343000 *
889.6996_7.495 rel_abund_log2 b1 b3 24 24 -2.497189 23 0.0201000 *
889.7358_8.865 rel_abund_log2 b1 b3 24 24 3.108084 23 0.0049500 **
891.7156_7.718 rel_abund_log2 b1 b3 24 24 4.507412 23 0.0001590 ***
891.7406_11.489 rel_abund_log2 b1 b3 24 24 -3.703443 23 0.0011700 **
892.7383_11.126 rel_abund_log2 b1 b3 24 24 -3.555903 23 0.0016800 **
893.6733_6.713 rel_abund_log2 b1 b3 24 24 -2.456593 23 0.0220000 *
893.7563_11.645 rel_abund_log2 b1 b3 24 24 -3.429985 23 0.0022900 **
894.7548_11.21 rel_abund_log2 b1 b3 24 24 -4.490365 23 0.0001660 ***
896.5379_6.373 rel_abund_log2 b1 b3 24 24 -2.425185 23 0.0236000 *
896.7714_11.316 rel_abund_log2 b1 b3 24 24 -4.704403 23 0.0000972 ****
897.7047_7.419 rel_abund_log2 b1 b3 24 24 -7.790842 23 0.0000001 ****
897.7049_6.893 rel_abund_log2 b1 b3 24 24 -2.817656 23 0.0097700 **
897.705_7.958 rel_abund_log2 b1 b3 24 24 -3.277787 23 0.0033000 **
898.7872_11.44 rel_abund_log2 b1 b3 24 24 -2.973604 23 0.0068000 **
899.684_6.44 rel_abund_log2 b1 b3 24 24 -2.228754 23 0.0359000 *
899.7091_11.203 rel_abund_log2 b1 b3 24 24 -5.540967 23 0.0000123 ****
899.7204_7.586 rel_abund_log2 b1 b3 24 24 -2.377235 23 0.0261000 *
899.7208_8.396 rel_abund_log2 b1 b3 24 24 -2.562957 23 0.0174000 *
900.6836_9.96 rel_abund_log2 b1 b3 24 24 -4.653275 23 0.0001100 ***
901.6999_7.143 rel_abund_log2 b1 b3 24 24 4.613462 23 0.0001220 ***
901.7251_11.318 rel_abund_log2 b1 b3 24 24 -3.802022 23 0.0009190 ***
902.5743_7.805 rel_abund_log2 b1 b3 24 24 -2.419880 23 0.0238000 *
902.7673_8.957 rel_abund_log2 b1 b3 24 24 3.294921 23 0.0031700 **
902.8182_11.738 rel_abund_log2 b1 b3 24 24 3.055876 23 0.0056000 **
903.6531_10.207 rel_abund_log2 b1 b3 24 24 2.614281 23 0.0155000 *
903.6531_9.918 rel_abund_log2 b1 b3 24 24 -3.688009 23 0.0012200 **
904.7835_9.894 rel_abund_log2 b1 b3 24 24 2.684184 23 0.0132000 *
904.8336_11.91 rel_abund_log2 b1 b3 24 24 3.839866 23 0.0008370 ***
907.6886_7.2 rel_abund_log2 b1 b3 24 24 -2.678294 23 0.0134000 *
907.7722_11.767 rel_abund_log2 b1 b3 24 24 2.145514 23 0.0427000 *
911.5614_9.119 rel_abund_log2 b1 b3 24 24 2.453120 23 0.0222000 *
911.7203_7.674 rel_abund_log2 b1 b3 24 24 -2.882662 23 0.0084000 **
911.7206_7.958 rel_abund_log2 b1 b3 24 24 -3.466535 23 0.0020900 **
912.8727_11.58 rel_abund_log2 b1 b3 24 24 4.574625 23 0.0001340 ***
913.7362_8.395 rel_abund_log2 b1 b3 24 24 -2.850891 23 0.0090400 **
915.7154_7.143 rel_abund_log2 b1 b3 24 24 3.833706 23 0.0008490 ***
916.7378_11.078 rel_abund_log2 b1 b3 24 24 -2.613855 23 0.0155000 *
918.754_11.178 rel_abund_log2 b1 b3 24 24 -3.659181 23 0.0013100 **
918.7987_9.897 rel_abund_log2 b1 b3 24 24 3.056147 23 0.0056000 **
919.7465_8.87 rel_abund_log2 b1 b3 24 24 3.667840 23 0.0012800 **
920.75_8.87 rel_abund_log2 b1 b3 24 24 2.630550 23 0.0149000 *
920.7705_11.302 rel_abund_log2 b1 b3 24 24 -2.692494 23 0.0130000 *
922.7862_11.386 rel_abund_log2 b1 b3 24 24 -3.565127 23 0.0016400 **
923.684_6.374 rel_abund_log2 b1 b3 24 24 -3.056209 23 0.0056000 **
923.7092_11.174 rel_abund_log2 b1 b3 24 24 -2.676132 23 0.0135000 *
924.8016_11.511 rel_abund_log2 b1 b3 24 24 -3.657048 23 0.0013100 **
926.8159_11.647 rel_abund_log2 b1 b3 24 24 -2.479754 23 0.0209000 *
927.7399_11.374 rel_abund_log2 b1 b3 24 24 -2.413198 23 0.0242000 *
928.7831_8.964 rel_abund_log2 b1 b3 24 24 -3.885772 23 0.0007470 ***
929.7558_11.499 rel_abund_log2 b1 b3 24 24 -2.417969 23 0.0239000 *
930.7988_10.228 rel_abund_log2 b1 b3 24 24 3.246294 23 0.0035600 **
930.7989_9.903 rel_abund_log2 b1 b3 24 24 -3.045202 23 0.0057500 **
930.8479_11.919 rel_abund_log2 b1 b3 24 24 3.548618 23 0.0017100 **
931.7715_11.646 rel_abund_log2 b1 b3 24 24 -3.509229 23 0.0018900 **
937.6995_6.371 rel_abund_log2 b1 b3 24 24 -4.746088 23 0.0000877 ****
938.8159_11.193 rel_abund_log2 b1 b3 24 24 -4.654542 23 0.0001100 ***
941.7308_7.633 rel_abund_log2 b1 b3 24 24 -3.652261 23 0.0013300 **
941.7313_7.957 rel_abund_log2 b1 b3 24 24 -3.813549 23 0.0008930 ***
942.7538_11.123 rel_abund_log2 b1 b3 24 24 -2.402254 23 0.0248000 *
942.7986_8.961 rel_abund_log2 b1 b3 24 24 -2.410714 23 0.0243000 *
944.7698_11.221 rel_abund_log2 b1 b3 24 24 -3.344451 23 0.0028100 **
944.8145_9.903 rel_abund_log2 b1 b3 24 24 -3.171629 23 0.0042600 **
944.8656_11.558 rel_abund_log2 b1 b3 24 24 -2.367638 23 0.0267000 *
949.7248_11.221 rel_abund_log2 b1 b3 24 24 -3.237497 23 0.0036400 **
950.8156_11.512 rel_abund_log2 b1 b3 24 24 -3.303901 23 0.0031000 **
951.7153_7.77 rel_abund_log2 b1 b3 24 24 -3.845491 23 0.0008250 ***
952.831_11.66 rel_abund_log2 b1 b3 24 24 -2.636550 23 0.0147000 *
953.7312_8.446 rel_abund_log2 b1 b3 24 24 -2.275111 23 0.0325000 *
953.7558_11.474 rel_abund_log2 b1 b3 24 24 2.402817 23 0.0247000 *
955.7465_8.781 rel_abund_log2 b1 b3 24 24 -3.389033 23 0.0025200 **
957.7865_11.655 rel_abund_log2 b1 b3 24 24 -2.544370 23 0.0181000 *
963.8345_12.135 rel_abund_log2 b1 b3 24 24 2.395330 23 0.0251000 *
965.7308_7.761 rel_abund_log2 b1 b3 24 24 -3.527716 23 0.0018000 **
966.8463_11.305 rel_abund_log2 b1 b3 24 24 -3.170502 23 0.0042700 **
968.863_11.436 rel_abund_log2 b1 b3 24 24 -2.230263 23 0.0358000 *
972.7339_9.773 rel_abund_log2 b1 b3 24 24 2.710553 23 0.0125000 *
972.8_11.345 rel_abund_log2 b1 b3 24 24 -2.649783 23 0.0143000 *
976.684_9.115 rel_abund_log2 b1 b3 24 24 2.333113 23 0.0287000 *
978.8456_11.66 rel_abund_log2 b1 b3 24 24 -2.233451 23 0.0355000 *
993.7984_10.238 rel_abund_log2 b1 b3 24 24 -4.313462 23 0.0002580 ***
# how many are significant?
nrow(tomato_t.test_paired_sig)
## [1] 786
Remove BG diet
# let's grab both datasets for features sig in pre v post red and pre v post control and combine them
fulljoin_t.test_tomANDctrl <- full_join(tomato_t.test_paired_sig, ctrl_t.test_paired_sig,
                                        by = "mz_rt",
                                        suffix = c(".tom", ".ctrl"))

# number features in full list
nrow(fulljoin_t.test_tomANDctrl)
## [1] 897

Let’s try and remove features significant due to the background diet

sig_paired_tom_rmBG <- fulljoin_t.test_tomANDctrl %>%
  # add a column to account for direction
  mutate(sign = statistic.tom * statistic.ctrl) %>%
  # replace NAs in the sign column with 0
  mutate(sign = replace_na(sign, 0)) %>%
  # replace NAs in the statistic.ctrl column to 0
  mutate(statistic.ctrl = replace_na(statistic.ctrl, 0)) %>%
  # filter for columns that are either negative (means ctrl and tomato are going in opposite dir) or where the stat.ctrl col is 0 (so we don't remove features that are just not present in the sig control list)
  filter((sign < 0 | statistic.ctrl == 0))

# number of features in new list without bg diet effect
nrow(sig_paired_tom_rmBG)
## [1] 460

How many BG-diet-related features did we remove from the list of significant beta features?

nrow(tomato_t.test_paired_sig) - nrow(sig_paired_tom_rmBG)
## [1] 326
ANOVA overlap

Keep sig features in t-test that have a match in sig ANOVA. Let’s take our new feature list (background diet effect removed)

# select only features from paired list that have a match in ANOVA list
tom_sig_ANOVA_overlap_paired <- inner_join(sig_paired_tom_rmBG,
                                            trt_tukeyHSD_sig,
                                            by = "mz_rt",
                                            suffix = c(".t-test", ".tukeys"))

# features overlapping with sig ANOVA
unique(tom_sig_ANOVA_overlap_paired$mz_rt)
##  [1] "1157.3434_6.852"  "1341.2177_11.895" "1342.2211_11.896" "1479.1185_7.024" 
##  [5] "1526.0908_8.976"  "1527.094_8.977"   "1536.6252_6.856"  "1619.2973_8.957" 
##  [9] "1624.8418_9.901"  "1635.8345_9.901"  "1649.3448_9.904"  "286.2013_0.633"  
## [13] "337.1048_1.268"   "536.437_11.201"   "605.5497_9.629"   "608.4637_5.649"  
## [17] "677.5586_5.973"   "726.5428_8.237"   "738.543_8.181"    "748.5258_8.233"  
## [21] "759.0903_6.983"   "759.1221_6.983"   "774.5404_8.982"   "785.0201_6.879"  
## [25] "796.5222_9.007"   "797.6453_8.401"   "811.6598_8.009"   "813.6866_9.902"  
## [29] "827.6999_10.389"  "835.6566_8.968"   "851.64_9.902"     "865.5795_9.626"  
## [33] "876.5695_7.88"    "878.5852_8.857"   "889.6375_9.586"   "897.705_7.958"   
## [37] "903.6531_10.207"  "907.7722_11.767"

Here, I will compare control to each tomato treatment individually, and then tomato treatments against each other. I will also compare tomato to control. I am using the log transformed values of rel abundance since parametric tests assume normality.

Red v ctrl

# run t-test
red_v_ctrl_t.test <- df_for_stats %>%
  filter(treatment %in% c("control", "red")) %>%
  filter(period == "b3") %>%
  dplyr::select(subject, treatment, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ treatment, 
         paired = FALSE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
sig_red_v_ctrl_t.test <- red_v_ctrl_t.test %>%
  filter(p < 0.05)
kable(sig_red_v_ctrl_t.test)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
1186.3509_7.119 rel_abund_log2 control red 11 12 -2.127690 20.99967 0.04540 *
1226.4736_8.96 rel_abund_log2 control red 11 12 2.915862 20.99028 0.00826 **
1329.2228_12.335 rel_abund_log2 control red 11 12 2.228528 19.22203 0.03800 *
1522.0815_7.299 rel_abund_log2 control red 11 12 -2.202931 20.08307 0.03940 *
1551.6195_6.93 rel_abund_log2 control red 11 12 -2.158220 20.99914 0.04260 *
1552.6273_7.034 rel_abund_log2 control red 11 12 2.245082 17.03950 0.03830 *
1594.0976_6.869 rel_abund_log2 control red 11 12 2.113064 20.98841 0.04670 *
1595.6827_8.019 rel_abund_log2 control red 11 12 -2.611962 20.65333 0.01640 *
1597.3162_8.956 rel_abund_log2 control red 11 12 2.147835 20.96746 0.04360 *
1607.1867_8.003 rel_abund_log2 control red 11 12 -2.805197 20.96735 0.01060 *
1612.335_9.9 rel_abund_log2 control red 11 12 2.328866 20.79227 0.03000 *
162.1126_0.545 rel_abund_log2 control red 11 12 3.511107 20.93913 0.00208 **
1685.4637_11.522 rel_abund_log2 control red 11 12 -2.617311 19.45746 0.01670 *
184.0946_0.54 rel_abund_log2 control red 11 12 2.721035 20.57593 0.01290 *
330.2637_0.689 rel_abund_log2 control red 11 12 -2.130643 16.71068 0.04830 *
369.3508_10.879 rel_abund_log2 control red 11 12 2.499518 20.72949 0.02090 *
383.1533_0.931 rel_abund_log2 control red 11 12 -2.516115 16.30960 0.02270 *
515.313_3.077 rel_abund_log2 control red 11 12 2.379443 19.73893 0.02750 *
536.437_10.971 rel_abund_log2 control red 11 12 -17.577022 20.56390 0.00000 ****
698.6194_10.879 rel_abund_log2 control red 11 12 2.818125 15.64467 0.01260 *
744.5538_6.51 rel_abund_log2 control red 11 12 -2.190512 17.81496 0.04200 *
759.1449_6.983 rel_abund_log2 control red 11 12 -3.104064 20.80020 0.00541 **
759.243_6.983 rel_abund_log2 control red 11 12 -2.114587 20.52142 0.04690 *
759.2652_6.984 rel_abund_log2 control red 11 12 -2.202204 20.68103 0.03910 *
759.4259_6.982 rel_abund_log2 control red 11 12 -2.177128 20.98581 0.04100 *
760.4052_6.983 rel_abund_log2 control red 11 12 -2.309024 15.84633 0.03480 *
760.4925_6.98 rel_abund_log2 control red 11 12 -3.003788 20.02325 0.00701 **
774.5634_4.81 rel_abund_log2 control red 11 12 -3.173353 20.99943 0.00458 **
783.431_6.876 rel_abund_log2 control red 11 12 2.162299 19.61778 0.04310 *
784.6324_6.878 rel_abund_log2 control red 11 12 2.312621 12.94912 0.03780 *
787.0988_8.052 rel_abund_log2 control red 11 12 -2.254153 20.96946 0.03500 *
793.5586_7.102 rel_abund_log2 control red 11 12 2.085902 20.49242 0.04970 *
797.5914_8.07 rel_abund_log2 control red 11 12 -2.487848 15.23107 0.02490 *
826.594_5.988 rel_abund_log2 control red 11 12 -3.865591 15.83786 0.00139 **
836.6167_8.053 rel_abund_log2 control red 11 12 2.348559 20.98178 0.02870 *
844.6529_8.109 rel_abund_log2 control red 11 12 -3.094096 17.15228 0.00653 **
928.7831_8.964 rel_abund_log2 control red 11 12 2.129956 20.87973 0.04520 *
# how many are significant?
nrow(sig_red_v_ctrl_t.test)
## [1] 37
ANOVA overlap

Keep sig features in unpaired t-test that have a match in sig ANOVA

sig_overlap_ctrl_red <- inner_join(sig_red_v_ctrl_t.test,
                                   trt_tukeyHSD_sig,
                                   by = "mz_rt",
                                   suffix = c(".t-test", ".tukeys"))

unique(sig_overlap_ctrl_red$mz_rt)
## [1] "1226.4736_8.96"  "1594.0976_6.869" "162.1126_0.545"  "536.437_10.971" 
## [5] "797.5914_8.07"   "928.7831_8.964"

Beta v ctrl

# run t-tests
beta_v_ctrl_t.test <- df_for_stats %>%
  filter(treatment %in% c("control" , "beta"),
         period == "b3") %>%
  dplyr::select(subject, treatment, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ treatment, 
         paired = FALSE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
sig_beta_v_ctrl_t.test <- beta_v_ctrl_t.test %>%
  filter(p < 0.05)
kable(sig_beta_v_ctrl_t.test)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
1002.658_3.079 rel_abund_log2 beta control 12 11 2.192276 20.99753 0.0398000 *
118.0864_0.597 rel_abund_log2 beta control 12 11 -2.152878 17.28673 0.0457000 *
1192.8412_6.709 rel_abund_log2 beta control 12 11 -2.096670 19.71279 0.0491000 *
1193.3431_6.71 rel_abund_log2 beta control 12 11 -2.706443 20.99265 0.0132000 *
1195.8336_6.857 rel_abund_log2 beta control 12 11 -2.157819 20.46148 0.0430000 *
1197.3456_7.08 rel_abund_log2 beta control 12 11 -2.397133 19.05306 0.0269000 *
1218.5051_9.902 rel_abund_log2 beta control 12 11 -2.670035 17.96773 0.0156000 *
1226.4736_8.96 rel_abund_log2 beta control 12 11 -3.010350 18.94948 0.0072100 **
1227.3893_7.956 rel_abund_log2 beta control 12 11 -2.771515 19.77305 0.0119000 *
1227.7565_5.834 rel_abund_log2 beta control 12 11 -2.746757 19.42664 0.0127000 *
1242.5051_10.22 rel_abund_log2 beta control 12 11 -2.152101 18.18360 0.0451000 *
1242.5053_9.906 rel_abund_log2 beta control 12 11 -2.450448 19.02528 0.0241000 *
1329.2228_12.335 rel_abund_log2 beta control 12 11 -2.987544 19.54171 0.0074100 **
1406.1439_6.504 rel_abund_log2 beta control 12 11 -2.333209 18.30912 0.0312000 *
1417.6332_6.508 rel_abund_log2 beta control 12 11 -2.444258 14.34033 0.0280000 *
1418.1346_6.507 rel_abund_log2 beta control 12 11 -2.664070 17.33629 0.0162000 *
1419.1345_6.509 rel_abund_log2 beta control 12 11 -2.238653 17.49860 0.0384000 *
1429.1272_6.513 rel_abund_log2 beta control 12 11 -2.465973 20.97621 0.0224000 *
1548.6249_6.858 rel_abund_log2 beta control 12 11 -2.796636 18.23823 0.0118000 *
1557.1328_6.71 rel_abund_log2 beta control 12 11 -2.970215 20.99902 0.0073000 **
1558.1357_6.713 rel_abund_log2 beta control 12 11 -2.224426 20.05466 0.0378000 *
1575.1173_6.863 rel_abund_log2 beta control 12 11 -2.439213 18.78736 0.0248000 *
1577.1237_6.867 rel_abund_log2 beta control 12 11 -2.162239 20.30340 0.0427000 *
1585.1303_6.711 rel_abund_log2 beta control 12 11 -2.322577 18.17618 0.0320000 *
1592.2118_7.764 rel_abund_log2 beta control 12 11 -2.427547 20.44978 0.0245000 *
1596.1232_6.714 rel_abund_log2 beta control 12 11 -2.267284 15.09253 0.0385000 *
1596.6247_6.715 rel_abund_log2 beta control 12 11 -2.352786 14.42196 0.0333000 *
1597.1201_6.716 rel_abund_log2 beta control 12 11 -2.098926 18.79358 0.0496000 *
1597.3162_8.956 rel_abund_log2 beta control 12 11 -2.595291 19.82295 0.0174000 *
1601.3486_9.899 rel_abund_log2 beta control 12 11 -2.189008 16.42417 0.0434000 *
1611.8348_9.901 rel_abund_log2 beta control 12 11 -2.107998 17.87676 0.0494000 *
1612.335_9.9 rel_abund_log2 beta control 12 11 -2.392405 17.24316 0.0284000 *
1618.2939_8.956 rel_abund_log2 beta control 12 11 -3.352964 20.92152 0.0030200 **
1619.2973_8.957 rel_abund_log2 beta control 12 11 -2.874547 19.99275 0.0093700 **
1624.3414_10.412 rel_abund_log2 beta control 12 11 -2.169675 20.82741 0.0418000 *
1624.8418_9.901 rel_abund_log2 beta control 12 11 -2.283605 17.54810 0.0351000 *
1635.8345_9.901 rel_abund_log2 beta control 12 11 -2.270944 15.87441 0.0374000 *
536.437_10.971 rel_abund_log2 beta control 12 11 3.020418 20.87237 0.0065400 **
536.437_11.201 rel_abund_log2 beta control 12 11 7.859672 14.28943 0.0000015 ****
568.4266_4.64 rel_abund_log2 beta control 12 11 -2.922333 20.86424 0.0081800 **
569.4277_4.639 rel_abund_log2 beta control 12 11 -2.934578 19.21458 0.0084400 **
585.2705_0.643 rel_abund_log2 beta control 12 11 -2.554432 20.85213 0.0185000 *
593.4762_4.644 rel_abund_log2 beta control 12 11 -2.605201 19.61083 0.0171000 *
614.3398_3.784 rel_abund_log2 beta control 12 11 2.197436 20.98167 0.0394000 *
692.5581_7.191 rel_abund_log2 beta control 12 11 -2.305604 20.72998 0.0316000 *
701.5604_5.818 rel_abund_log2 beta control 12 11 -2.101908 20.98834 0.0478000 *
703.5745_6.822 rel_abund_log2 beta control 12 11 -2.205941 19.68302 0.0394000 *
703.5779_6.502 rel_abund_log2 beta control 12 11 -2.176357 17.33686 0.0436000 *
704.3938_6.501 rel_abund_log2 beta control 12 11 -2.164504 17.94508 0.0442000 *
704.4038_6.503 rel_abund_log2 beta control 12 11 -2.785378 17.21802 0.0126000 *
705.6376_6.502 rel_abund_log2 beta control 12 11 -2.295174 15.32628 0.0362000 *
725.5564_6.829 rel_abund_log2 beta control 12 11 -2.341706 16.94685 0.0317000 *
741.551_6.153 rel_abund_log2 beta control 12 11 -2.445215 20.92336 0.0234000 *
742.5718_8.28 rel_abund_log2 beta control 12 11 -2.215412 20.62847 0.0381000 *
751.5717_6.812 rel_abund_log2 beta control 12 11 -2.106329 20.70189 0.0476000 *
753.5881_7.505 rel_abund_log2 beta control 12 11 -2.382275 20.14697 0.0272000 *
765.9874_3.073 rel_abund_log2 beta control 12 11 2.633339 20.82417 0.0156000 *
774.5404_8.982 rel_abund_log2 beta control 12 11 3.002996 20.75713 0.0068300 **
781.62_7.043 rel_abund_log2 beta control 12 11 -2.987588 20.62239 0.0071100 **
784.5042_6.876 rel_abund_log2 beta control 12 11 -2.647485 16.86826 0.0170000 *
785.6542_8.953 rel_abund_log2 beta control 12 11 -2.269810 19.95424 0.0345000 *
794.6868_10.627 rel_abund_log2 beta control 12 11 -2.392037 20.55516 0.0264000 *
796.5222_9.007 rel_abund_log2 beta control 12 11 2.096164 20.87242 0.0484000 *
797.5914_8.07 rel_abund_log2 beta control 12 11 2.669145 16.58979 0.0164000 *
799.6692_9.585 rel_abund_log2 beta control 12 11 -2.586140 20.97352 0.0172000 *
801.686_10.409 rel_abund_log2 beta control 12 11 -2.243837 18.26507 0.0375000 *
807.6349_8.948 rel_abund_log2 beta control 12 11 -2.282882 19.84641 0.0336000 *
809.6525_8.065 rel_abund_log2 beta control 12 11 -2.708238 19.13195 0.0139000 *
810.6564_8.03 rel_abund_log2 beta control 12 11 -2.492587 16.63166 0.0236000 *
811.6703_8.961 rel_abund_log2 beta control 12 11 -2.259023 19.99700 0.0352000 *
813.6854_10.226 rel_abund_log2 beta control 12 11 -2.262063 20.46881 0.0347000 *
824.6527_9.167 rel_abund_log2 beta control 12 11 -2.805985 20.76907 0.0107000 *
824.6537_9.596 rel_abund_log2 beta control 12 11 -2.494020 20.48129 0.0213000 *
827.6999_10.502 rel_abund_log2 beta control 12 11 -2.131073 20.19337 0.0456000 *
830.6471_9.551 rel_abund_log2 beta control 12 11 -2.360358 20.73100 0.0281000 *
833.6507_8.971 rel_abund_log2 beta control 12 11 -2.992813 20.97487 0.0069400 **
834.7053_6.506 rel_abund_log2 beta control 12 11 -2.134743 20.98130 0.0447000 *
835.6566_8.968 rel_abund_log2 beta control 12 11 -2.316831 20.12171 0.0312000 *
835.6664_10.22 rel_abund_log2 beta control 12 11 -2.460218 18.89251 0.0237000 *
862.6247_6.471 rel_abund_log2 beta control 12 11 -2.193547 19.96398 0.0403000 *
902.7673_8.957 rel_abund_log2 beta control 12 11 -2.131871 20.93510 0.0450000 *
928.7831_8.964 rel_abund_log2 beta control 12 11 -2.395480 18.25770 0.0275000 *
946.718_9.767 rel_abund_log2 beta control 12 11 -2.356107 18.21479 0.0299000 *
970.718_8.858 rel_abund_log2 beta control 12 11 -2.205551 20.58688 0.0389000 *
# how many are significant?
nrow(sig_beta_v_ctrl_t.test)
## [1] 84
ANOVA overlap

Keep sig features in t-test that have a match in sig ANOVA

sig_overlap_ctrl_beta <- inner_join(sig_beta_v_ctrl_t.test,
                                   trt_tukeyHSD_sig,
                                   by = "mz_rt",
                                   suffix = c(".t-test", ".tukeys"))

# which features overlap?
unique(sig_overlap_ctrl_beta$mz_rt)
##  [1] "118.0864_0.597"   "1192.8412_6.709"  "1193.3431_6.71"   "1226.4736_8.96"  
##  [5] "1242.5051_10.22"  "1242.5053_9.906"  "1548.6249_6.858"  "1557.1328_6.71"  
##  [9] "1558.1357_6.713"  "1597.1201_6.716"  "1618.2939_8.956"  "1619.2973_8.957" 
## [13] "1624.3414_10.412" "1624.8418_9.901"  "1635.8345_9.901"  "536.437_10.971"  
## [17] "536.437_11.201"   "593.4762_4.644"   "692.5581_7.191"   "742.5718_8.28"   
## [21] "774.5404_8.982"   "781.62_7.043"     "785.6542_8.953"   "796.5222_9.007"  
## [25] "797.5914_8.07"    "799.6692_9.585"   "801.686_10.409"   "807.6349_8.948"  
## [29] "809.6525_8.065"   "810.6564_8.03"    "811.6703_8.961"   "813.6854_10.226" 
## [33] "827.6999_10.502"  "833.6507_8.971"   "835.6566_8.968"   "835.6664_10.22"  
## [37] "902.7673_8.957"   "928.7831_8.964"

Beta v red

# run t-tests
beta_v_red_t.test <- df_for_stats %>%
  filter(treatment %in% c("beta", "red"),
         period == "b3") %>%
  dplyr::select(subject, treatment, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ treatment, 
         paired = FALSE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
sig_beta_v_red_t.test <- beta_v_red_t.test %>%
  filter(p < 0.05)
kable(sig_beta_v_red_t.test)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
1002.658_3.079 rel_abund_log2 beta red 12 12 2.942650 21.85481 0.00756 **
1157.3434_6.852 rel_abund_log2 beta red 12 12 -2.716960 20.28153 0.01320 *
1185.344_7.069 rel_abund_log2 beta red 12 12 2.360789 20.80053 0.02810 *
1227.7565_5.834 rel_abund_log2 beta red 12 12 -2.321969 20.41165 0.03070 *
1249.7383_5.838 rel_abund_log2 beta red 12 12 -2.544957 21.27762 0.01870 *
1250.8236_3.081 rel_abund_log2 beta red 12 12 2.168699 21.49554 0.04150 *
1363.015_6.835 rel_abund_log2 beta red 12 12 -2.655713 19.88652 0.01520 *
1511.145_6.854 rel_abund_log2 beta red 12 12 -2.263250 18.81052 0.03560 *
1536.6252_6.856 rel_abund_log2 beta red 12 12 -2.213067 19.08980 0.03930 *
1542.2142_6.931 rel_abund_log2 beta red 12 12 -2.458452 18.58234 0.02400 *
1551.6195_6.93 rel_abund_log2 beta red 12 12 -2.381095 20.04404 0.02730 *
1583.089_7.72 rel_abund_log2 beta red 12 12 -2.147913 18.49558 0.04520 *
1607.1867_8.003 rel_abund_log2 beta red 12 12 -2.435178 21.22758 0.02380 *
1625.2172_8.052 rel_abund_log2 beta red 12 12 2.337877 19.35722 0.03030 *
346.0093_0.919 rel_abund_log2 beta red 12 12 -2.255192 21.92703 0.03440 *
508.3578_0.689 rel_abund_log2 beta red 12 12 -2.411917 20.00919 0.02560 *
515.313_3.077 rel_abund_log2 beta red 12 12 3.377368 17.13443 0.00355 **
518.322_3.062 rel_abund_log2 beta red 12 12 -2.499157 17.98059 0.02240 *
536.437_10.971 rel_abund_log2 beta red 12 12 -14.700188 21.90006 0.00000 ****
536.437_11.201 rel_abund_log2 beta red 12 12 8.822292 18.46199 0.00000 ****
541.3858_4.202 rel_abund_log2 beta red 12 12 -2.875875 20.40262 0.00922 **
597.4596_3.082 rel_abund_log2 beta red 12 12 2.091192 21.38103 0.04860 *
692.5581_7.191 rel_abund_log2 beta red 12 12 -2.420822 21.98562 0.02420 *
699.5412_5.971 rel_abund_log2 beta red 12 12 -2.368948 20.58067 0.02770 *
717.5903_7.018 rel_abund_log2 beta red 12 12 -2.375782 20.94224 0.02710 *
748.6211_9.504 rel_abund_log2 beta red 12 12 -3.402255 21.95397 0.00256 **
750.52_0.687 rel_abund_log2 beta red 12 12 -2.276167 19.67075 0.03420 *
759.058_6.985 rel_abund_log2 beta red 12 12 -2.616382 21.69609 0.01590 *
759.2209_6.98 rel_abund_log2 beta red 12 12 -2.323769 21.16707 0.03020 *
760.2926_6.982 rel_abund_log2 beta red 12 12 -2.083027 21.99999 0.04910 *
760.4052_6.983 rel_abund_log2 beta red 12 12 -3.496168 19.14834 0.00239 **
760.4788_6.981 rel_abund_log2 beta red 12 12 -2.194262 21.76911 0.03920 *
760.4925_6.98 rel_abund_log2 beta red 12 12 -2.721056 20.35010 0.01300 *
788.3339_8.051 rel_abund_log2 beta red 12 12 2.114345 20.48855 0.04690 *
800.5558_9.058 rel_abund_log2 beta red 12 12 2.595942 19.14165 0.01770 *
805.6187_7.848 rel_abund_log2 beta red 12 12 -2.086894 21.70686 0.04890 *
806.973_6.716 rel_abund_log2 beta red 12 12 -2.258215 18.55660 0.03620 *
820.6364_8.966 rel_abund_log2 beta red 12 12 -2.132966 20.55453 0.04520 *
824.6537_9.596 rel_abund_log2 beta red 12 12 -2.863140 21.80253 0.00909 **
825.6815_9.335 rel_abund_log2 beta red 12 12 -2.158661 21.89567 0.04210 *
830.6471_9.551 rel_abund_log2 beta red 12 12 -2.230766 21.50994 0.03650 *
834.5933_5.658 rel_abund_log2 beta red 12 12 -2.392944 21.21013 0.02600 *
842.638_7.268 rel_abund_log2 beta red 12 12 -2.246069 21.90116 0.03510 *
846.6771_7.001 rel_abund_log2 beta red 12 12 2.693786 20.42515 0.01380 *
889.7001_7.009 rel_abund_log2 beta red 12 12 -2.470332 17.28952 0.02420 *
890.7034_7.007 rel_abund_log2 beta red 12 12 -2.185075 18.79360 0.04180 *
939.7152_7.328 rel_abund_log2 beta red 12 12 2.129918 18.89856 0.04650 *
972.8574_11.264 rel_abund_log2 beta red 12 12 -2.817938 21.12523 0.01030 *
# how many are significant?
nrow(sig_beta_v_red_t.test)
## [1] 48
ANOVA overlap

Keep sig features in t-test that have a match in sig ANOVA

sig_overlap_beta_red <- inner_join(sig_beta_v_red_t.test,
                                   trt_tukeyHSD_sig,
                                   by = "mz_rt",
                                   suffix = c(".t-test", ".tukeys"))

# which features overlap?
unique(sig_overlap_beta_red$mz_rt)
##  [1] "1157.3434_6.852" "1363.015_6.835"  "1511.145_6.854"  "1536.6252_6.856"
##  [5] "536.437_10.971"  "536.437_11.201"  "692.5581_7.191"  "699.5412_5.971" 
##  [9] "717.5903_7.018"  "805.6187_7.848"  "825.6815_9.335"  "834.5933_5.658"

Tomato v ctrl

# run t-tests
tom_v_ctrl_t.test <- df_for_stats %>%
  filter(tomato_or_control %in% c("control", "tomato"),
         period == "b3") %>%
  dplyr::select(subject, tomato_or_control, mz_rt, rel_abund_log2) %>%
  group_by(mz_rt) %>%
  t_test(rel_abund_log2 ~ tomato_or_control, 
         paired = FALSE, 
         p.adjust.method = "BH") %>% # Benjamini-Hochberg controlling to lower false positives
  add_significance()

Statistically significant features

# which features are significant?
sig_tom_v_ctrl_t.test <- tom_v_ctrl_t.test %>%
  filter(p < 0.05)
kable(sig_tom_v_ctrl_t.test)
mz_rt .y. group1 group2 n1 n2 statistic df p p.signif
1192.8412_6.709 rel_abund_log2 control tomato 11 24 2.428666 27.80026 0.0219000 *
1193.3431_6.71 rel_abund_log2 control tomato 11 24 2.213639 24.43580 0.0364000 *
1195.8336_6.857 rel_abund_log2 control tomato 11 24 2.160327 23.42098 0.0412000 *
1197.3456_7.08 rel_abund_log2 control tomato 11 24 2.505757 28.07853 0.0183000 *
1218.5051_9.902 rel_abund_log2 control tomato 11 24 2.677839 27.39888 0.0124000 *
1226.4736_8.96 rel_abund_log2 control tomato 11 24 3.586004 25.57097 0.0013900 **
1227.3893_7.956 rel_abund_log2 control tomato 11 24 2.518309 32.77798 0.0169000 *
1242.5051_10.22 rel_abund_log2 control tomato 11 24 2.115289 20.22145 0.0470000 *
1329.2228_12.335 rel_abund_log2 control tomato 11 24 3.212661 27.64360 0.0033300 **
1418.1346_6.507 rel_abund_log2 control tomato 11 24 2.620702 29.75576 0.0137000 *
1429.1272_6.513 rel_abund_log2 control tomato 11 24 2.124134 21.59777 0.0454000 *
1469.1116_6.5 rel_abund_log2 control tomato 11 24 -2.169593 31.45420 0.0377000 *
1535.1521_6.713 rel_abund_log2 control tomato 11 24 2.232633 32.18676 0.0327000 *
1548.6249_6.858 rel_abund_log2 control tomato 11 24 2.275686 29.80436 0.0302000 *
1552.6273_7.034 rel_abund_log2 control tomato 11 24 2.503646 30.66231 0.0178000 *
1557.1328_6.71 rel_abund_log2 control tomato 11 24 2.406573 26.10839 0.0235000 *
1577.1237_6.867 rel_abund_log2 control tomato 11 24 2.522247 23.02015 0.0190000 *
1585.1303_6.711 rel_abund_log2 control tomato 11 24 2.237797 31.09485 0.0325000 *
1591.2114_7.764 rel_abund_log2 control tomato 11 24 2.163665 26.26867 0.0398000 *
1592.2118_7.764 rel_abund_log2 control tomato 11 24 2.725596 29.30585 0.0107000 *
1595.6827_8.019 rel_abund_log2 control tomato 11 24 -2.143765 23.47342 0.0426000 *
1596.1232_6.714 rel_abund_log2 control tomato 11 24 2.274823 31.90041 0.0298000 *
1596.6247_6.715 rel_abund_log2 control tomato 11 24 2.237408 32.65040 0.0322000 *
1597.3162_8.956 rel_abund_log2 control tomato 11 24 2.861105 24.38081 0.0085300 **
1601.3486_9.899 rel_abund_log2 control tomato 11 24 2.388334 29.93041 0.0234000 *
1611.8348_9.901 rel_abund_log2 control tomato 11 24 2.206186 26.65447 0.0362000 *
1612.335_9.9 rel_abund_log2 control tomato 11 24 2.858418 27.76094 0.0079800 **
1618.2939_8.956 rel_abund_log2 control tomato 11 24 3.147730 22.29351 0.0046200 **
1619.2973_8.957 rel_abund_log2 control tomato 11 24 2.878082 25.25003 0.0080300 **
162.1126_0.545 rel_abund_log2 control tomato 11 24 3.195301 23.73628 0.0039200 **
1622.3263_9.899 rel_abund_log2 control tomato 11 24 2.295479 26.07570 0.0300000 *
1624.3414_10.412 rel_abund_log2 control tomato 11 24 2.371611 18.11148 0.0290000 *
1624.8418_9.901 rel_abund_log2 control tomato 11 24 2.159564 27.59775 0.0397000 *
1635.8345_9.901 rel_abund_log2 control tomato 11 24 2.741381 31.26326 0.0100000 **
1636.3352_9.901 rel_abund_log2 control tomato 11 24 2.369464 32.89143 0.0238000 *
1685.4637_11.522 rel_abund_log2 control tomato 11 24 -2.196385 18.19751 0.0413000 *
184.0946_0.54 rel_abund_log2 control tomato 11 24 2.309608 23.26080 0.0301000 *
353.079_1.243 rel_abund_log2 control tomato 11 24 -2.114681 23.04164 0.0455000 *
369.3508_10.879 rel_abund_log2 control tomato 11 24 2.638153 22.64076 0.0148000 *
383.1533_0.931 rel_abund_log2 control tomato 11 24 -2.456402 31.28042 0.0198000 *
536.437_10.971 rel_abund_log2 control tomato 11 24 -5.922077 30.78663 0.0000016 ****
536.437_11.201 rel_abund_log2 control tomato 11 24 -3.500544 26.12831 0.0016900 **
568.4266_4.64 rel_abund_log2 control tomato 11 24 2.706363 22.15726 0.0128000 *
569.4277_4.639 rel_abund_log2 control tomato 11 24 3.120319 29.53913 0.0040100 **
585.2705_0.643 rel_abund_log2 control tomato 11 24 2.467032 18.70598 0.0235000 *
593.4762_4.644 rel_abund_log2 control tomato 11 24 2.180902 28.00726 0.0377000 *
698.6194_10.879 rel_abund_log2 control tomato 11 24 2.501330 14.75756 0.0247000 *
704.3938_6.501 rel_abund_log2 control tomato 11 24 2.555392 26.92491 0.0166000 *
704.4038_6.503 rel_abund_log2 control tomato 11 24 2.294970 31.10600 0.0286000 *
705.6376_6.502 rel_abund_log2 control tomato 11 24 2.224025 31.82409 0.0334000 *
744.5538_6.51 rel_abund_log2 control tomato 11 24 -2.528446 30.83301 0.0168000 *
759.1449_6.983 rel_abund_log2 control tomato 11 24 -2.513737 22.08206 0.0197000 *
765.9874_3.073 rel_abund_log2 control tomato 11 24 -2.670730 24.23921 0.0133000 *
774.5404_8.982 rel_abund_log2 control tomato 11 24 -2.326847 24.14383 0.0287000 *
774.5634_4.81 rel_abund_log2 control tomato 11 24 -2.112777 28.72279 0.0434000 *
781.62_7.043 rel_abund_log2 control tomato 11 24 2.325685 19.18802 0.0311000 *
783.431_6.876 rel_abund_log2 control tomato 11 24 2.212887 26.71419 0.0356000 *
784.5042_6.876 rel_abund_log2 control tomato 11 24 2.378216 30.74739 0.0238000 *
784.6324_6.878 rel_abund_log2 control tomato 11 24 2.438229 32.27817 0.0204000 *
785.6542_8.953 rel_abund_log2 control tomato 11 24 2.460846 24.57018 0.0213000 *
794.6868_10.627 rel_abund_log2 control tomato 11 24 2.481969 19.68921 0.0222000 *
794.7051_10.958 rel_abund_log2 control tomato 11 24 2.249156 32.96811 0.0313000 *
797.5914_8.07 rel_abund_log2 control tomato 11 24 -2.758682 13.17839 0.0161000 *
799.6692_9.585 rel_abund_log2 control tomato 11 24 2.296770 22.88124 0.0311000 *
801.686_10.409 rel_abund_log2 control tomato 11 24 2.064494 26.70938 0.0488000 *
809.6525_8.065 rel_abund_log2 control tomato 11 24 2.284442 15.98990 0.0363000 *
811.6703_8.961 rel_abund_log2 control tomato 11 24 2.354898 24.37721 0.0269000 *
813.6854_10.226 rel_abund_log2 control tomato 11 24 2.420896 25.44892 0.0229000 *
813.6866_9.902 rel_abund_log2 control tomato 11 24 2.247674 31.67981 0.0317000 *
824.6527_9.167 rel_abund_log2 control tomato 11 24 2.237067 24.65455 0.0346000 *
826.594_5.988 rel_abund_log2 control tomato 11 24 -2.830945 18.73232 0.0108000 *
833.6507_8.971 rel_abund_log2 control tomato 11 24 2.523234 20.54359 0.0200000 *
834.7053_6.506 rel_abund_log2 control tomato 11 24 2.286380 17.25444 0.0351000 *
835.6664_10.22 rel_abund_log2 control tomato 11 24 2.610768 29.56203 0.0140000 *
844.6529_8.109 rel_abund_log2 control tomato 11 24 -2.446364 32.55766 0.0200000 *
859.6895_6.984 rel_abund_log2 control tomato 11 24 -2.116553 30.10666 0.0427000 *
902.7673_8.957 rel_abund_log2 control tomato 11 24 2.357429 21.43887 0.0280000 *
928.7831_8.964 rel_abund_log2 control tomato 11 24 2.778580 27.08753 0.0098000 **
# how many are significant?
nrow(sig_tom_v_ctrl_t.test)
## [1] 78
ANOVA overlap

Keep sig features in t-test that have a match in sig ANOVA

sig_overlap_tom_ctrl <- inner_join(sig_tom_v_ctrl_t.test,
                                   trt_tukeyHSD_sig,
                                   by = "mz_rt",
                                   suffix = c(".t-test", ".tukeys"))

# which features overlap?
unique(sig_overlap_tom_ctrl$mz_rt)
##  [1] "1192.8412_6.709"  "1193.3431_6.71"   "1226.4736_8.96"   "1242.5051_10.22" 
##  [5] "1548.6249_6.858"  "1557.1328_6.71"   "1618.2939_8.956"  "1619.2973_8.957" 
##  [9] "162.1126_0.545"   "1624.3414_10.412" "1624.8418_9.901"  "1635.8345_9.901" 
## [13] "536.437_10.971"   "536.437_11.201"   "593.4762_4.644"   "774.5404_8.982"  
## [17] "781.62_7.043"     "785.6542_8.953"   "797.5914_8.07"    "799.6692_9.585"  
## [21] "801.686_10.409"   "809.6525_8.065"   "811.6703_8.961"   "813.6854_10.226" 
## [25] "813.6866_9.902"   "833.6507_8.971"   "835.6664_10.22"   "902.7673_8.957"  
## [29] "928.7831_8.964"

Heatmaps

ANOVA

# go back to wide for stats df
df_for_stats_wide <- df_for_stats %>%
  pivot_wider(names_from = mz_rt,
              values_from = rel_abund_log2)

ANOVA_trtperiod_heatmap_data <- df_for_stats_wide %>%
  filter(period == "b3") %>%
  dplyr::select(sample, 
                all_of(trt_anova_sig$mz_rt)) %>%
  column_to_rownames("sample")

head(ANOVA_trtperiod_heatmap_data, n=3)
##                         118.0864_0.597 1341.0272_6.83 1363.015_6.835
## x5107_b3_beta_c18pos_28       18.32788       10.56867       11.43975
## x5109_b3_beta_c18pos_81       18.08614       10.41244       12.33854
## x5112_b3_beta_c18pos_56       18.08859       11.01556       11.90621
##                         1365.0287_6.836 1531.6527_7.711 1585.2008_8.971
## x5107_b3_beta_c18pos_28        12.05681        13.46108        13.04438
## x5109_b3_beta_c18pos_81        12.47198        12.59145        12.83533
## x5112_b3_beta_c18pos_56        11.93622        12.77310        12.86113
##                         1586.2043_8.972 286.1437_1.13 308.1855_0.633
## x5107_b3_beta_c18pos_28        13.26054      15.59530       12.60870
## x5109_b3_beta_c18pos_81        12.85651      16.47807       13.91225
## x5112_b3_beta_c18pos_56        13.09636      15.03361       13.12646
##                         312.1597_1.413 373.2483_1.147 464.1914_0.656
## x5107_b3_beta_c18pos_28       13.99762       13.78420       12.43741
## x5109_b3_beta_c18pos_81       13.61853       14.30685       13.92181
## x5112_b3_beta_c18pos_56       13.47646       13.18580       12.64051
##                         526.2644_1.714 536.437_10.971 536.437_11.201
## x5107_b3_beta_c18pos_28       15.38726       14.13626       15.76905
## x5109_b3_beta_c18pos_81       15.60151       13.64178       15.56396
## x5112_b3_beta_c18pos_56       15.45049       14.33177       15.82453
##                         593.4757_4.54 593.4762_4.644 593.4768_4.312
## x5107_b3_beta_c18pos_28      11.81759       12.06375       11.55068
## x5109_b3_beta_c18pos_81      11.72187       11.96809       11.87066
## x5112_b3_beta_c18pos_56      11.77517       11.61433       11.76313
##                         596.4154_4.906 605.5497_9.629 610.431_5.16
## x5107_b3_beta_c18pos_28       13.59447       13.56674     14.05365
## x5109_b3_beta_c18pos_81       13.80423       12.90176     13.80027
## x5112_b3_beta_c18pos_56       13.21160       13.04551     13.89478
##                         650.6449_10.83 691.5742_6.403 692.6335_11.899
## x5107_b3_beta_c18pos_28       17.57799       12.29287        15.66660
## x5109_b3_beta_c18pos_81       17.31465       12.13172        15.67945
## x5112_b3_beta_c18pos_56       17.52072       12.27323        16.44264
##                         693.6368_11.899 719.6006_7.392 738.543_8.181
## x5107_b3_beta_c18pos_28        14.82319       12.66114      13.76122
## x5109_b3_beta_c18pos_81        14.81199       12.15745      12.91039
## x5112_b3_beta_c18pos_56        15.45162       12.72659      13.40845
##                         743.6054_7.227 760.5883_7.719 761.3681_7.718
## x5107_b3_beta_c18pos_28       13.93291       22.20178       12.80861
## x5109_b3_beta_c18pos_81       13.72383       21.82823       11.48494
## x5112_b3_beta_c18pos_56       13.47557       21.99390       12.37175
##                         761.4545_7.719 773.6516_9.025 775.6661_9.814
## x5107_b3_beta_c18pos_28       13.03432       12.89621       12.33325
## x5109_b3_beta_c18pos_81       12.09432       12.85221       12.39933
## x5112_b3_beta_c18pos_56       11.75753       13.11036       12.78094
##                         781.62_7.043 784.6654_10.38 787.6674_9.202
## x5107_b3_beta_c18pos_28     12.91163       15.55655       14.21447
## x5109_b3_beta_c18pos_81     12.93878       15.10685       13.97722
## x5112_b3_beta_c18pos_56     13.25657       15.17120       14.47030
##                         798.6518_8.391 807.6349_8.948 809.6525_8.065
## x5107_b3_beta_c18pos_28       14.13292       16.29715       15.81183
## x5109_b3_beta_c18pos_81       13.87908       16.11296       15.72594
## x5112_b3_beta_c18pos_56       14.14549       15.93857       15.72482
##                         810.6564_8.03 813.6834_9.437 825.6815_9.335
## x5107_b3_beta_c18pos_28      15.16108       13.53442       13.16572
## x5109_b3_beta_c18pos_81      15.19539       13.41267       13.13477
## x5112_b3_beta_c18pos_56      15.23552       14.05136       13.62055
##                         825.682_9.561 827.6998_10.277 827.6999_10.389
## x5107_b3_beta_c18pos_28      13.41194        16.75550        16.32508
## x5109_b3_beta_c18pos_81      13.17990        16.42048        15.16306
## x5112_b3_beta_c18pos_56      13.48333        16.99047        15.81504
##                         828.702_10.497 831.6353_8.196 856.5819_7.24 859.53_8.35
## x5107_b3_beta_c18pos_28       14.89963       12.80072      12.88760    12.14271
## x5109_b3_beta_c18pos_81       14.39998       12.92834      12.93171    11.76759
## x5112_b3_beta_c18pos_56       14.89397       13.25294      12.93838    11.31550
##                         865.5795_9.626 876.5695_7.88 878.7033_7.717
## x5107_b3_beta_c18pos_28       13.42176      12.81246       14.79617
## x5109_b3_beta_c18pos_81       12.52009      12.23240       14.61901
## x5112_b3_beta_c18pos_56       12.61819      12.72047       14.60653
##                         899.7091_11.203 912.8727_11.58
## x5107_b3_beta_c18pos_28        14.00587       12.14743
## x5109_b3_beta_c18pos_81        14.69047       12.11961
## x5112_b3_beta_c18pos_56        15.20439       12.09212
# pull metadata
metadata_Heatmap <- metadata

# change treatment to factor
metadata_Heatmap$treatment <- as.factor(metadata_Heatmap$treatment)

# make it so that rownames in metadata match rownames from heatmap df
rownames(metadata_Heatmap) <- rownames(ANOVA_trtperiod_heatmap_data)

# create annotation rows for treatment and wrangle
# select rownames (samples) from heatmap metadata (also ensures the order is correct)
anno_trt_row <- as.data.frame(rownames(metadata_Heatmap))

# pull trt column
anno_trt_row$treatment <- metadata_Heatmap$treatment
anno_trt_row$sex <- metadata_Heatmap$sex

# select trt
anno_trt_row <- anno_trt_row %>%
  dplyr::select(treatment, sex)

# get rownames to match heatmap again
rownames(anno_trt_row) <- rownames(metadata_Heatmap)
# create annotation colors
annotation_colors <- list(treatment = c("beta" = "orange",
                                        "control" = "green",
                                        "red" = "tomato"),
                          sex = c("M" = "burlywood",
                                  "F" = "pink"))
pheatmap(t(ANOVA_trtperiod_heatmap_data),
           scale = "row",
           cluster_rows = TRUE,
           annotation_col = anno_trt_row,
           annotation_colors = annotation_colors,
           cluster_cols = TRUE,
           show_colnames = TRUE,
           clustering_distance_rows = "euclidean",
           clustering_distance_cols = "euclidean",
           cutree_rows = 8,
           cutree_cols = 3,
           clustering_method = "ward.D2",
           color = colorRampPalette(c("#67a9cf", "#f7f7f7", "#ef8a62"))(16),
           main = "Heatmap of features significant in ANOVA across all treatment groups \nby Benjamoni-Hochberg corrected \np-values > 0.05 \nLipidomics C18 (+) \nShowing only post-intervention timepoints") 

# Without hierarchical clustering of samples (cols)
pheatmap(t(ANOVA_trtperiod_heatmap_data),
           scale = "row",
           cluster_rows = TRUE,
           annotation_col = anno_trt_row,
           annotation_colors = annotation_colors,
           cluster_cols = FALSE,
           show_colnames = TRUE,
           clustering_distance_rows = "euclidean",
           clustering_distance_cols = "euclidean",
           cutree_rows = 8,
           cutree_cols = 3,
           clustering_method = "ward.D2",
           color = colorRampPalette(c("#67a9cf", "#f7f7f7", "#ef8a62"))(16),
           main = "Heatmap of features significant in ANOVA across treatment groups \nby Benjamoni-Hochberg corrected \np-values > 0.05 \nLipidomics C18 (+) \nShowing only post-intervention timepoints") 

Unpaired

unpaired_t.tests_heatmap_data <- df_for_stats_wide %>%
  filter(period == "b3") %>%
  dplyr::select(sample, 
                all_of(sig_overlap_ctrl_beta$mz_rt),
                all_of(sig_overlap_ctrl_red$mz_rt),
                all_of(sig_overlap_tom_ctrl$mz_rt),
                all_of(sig_overlap_beta_red$mz_rt)) %>%
  column_to_rownames("sample")

head(unpaired_t.tests_heatmap_data,n = 3)
##                         118.0864_0.597 1192.8412_6.709 1193.3431_6.71
## x5107_b3_beta_c18pos_28       18.32788        12.08344       12.67894
## x5109_b3_beta_c18pos_81       18.08614        12.38855       12.49767
## x5112_b3_beta_c18pos_56       18.08859        11.98702       12.65512
##                         1226.4736_8.96 1242.5051_10.22 1242.5053_9.906
## x5107_b3_beta_c18pos_28       11.69151        11.37740        12.56389
## x5109_b3_beta_c18pos_81       11.00887        10.85121        11.97213
## x5112_b3_beta_c18pos_56       11.89162        11.32887        12.63237
##                         1548.6249_6.858 1557.1328_6.71 1558.1357_6.713
## x5107_b3_beta_c18pos_28        12.36216       12.16220        12.32980
## x5109_b3_beta_c18pos_81        11.95849       12.28881        12.53556
## x5112_b3_beta_c18pos_56        12.66611       11.93961        12.36858
##                         1597.1201_6.716 1618.2939_8.956 1619.2973_8.957
## x5107_b3_beta_c18pos_28        12.14798        11.65769        11.70411
## x5109_b3_beta_c18pos_81        11.78014        10.91371        10.89563
## x5112_b3_beta_c18pos_56        11.98181        11.25733        11.47127
##                         1624.3414_10.412 1624.8418_9.901 1635.8345_9.901
## x5107_b3_beta_c18pos_28         12.01037        12.39008        12.24433
## x5109_b3_beta_c18pos_81         11.48720        11.41456        11.10514
## x5112_b3_beta_c18pos_56         11.95295        11.91574        12.08204
##                         536.437_10.971 536.437_11.201 593.4762_4.644
## x5107_b3_beta_c18pos_28       14.13626       15.76905       12.06375
## x5109_b3_beta_c18pos_81       13.64178       15.56396       11.96809
## x5112_b3_beta_c18pos_56       14.33177       15.82453       11.61433
##                         692.5581_7.191 742.5718_8.28 774.5404_8.982
## x5107_b3_beta_c18pos_28       12.69678      13.67331       15.76036
## x5109_b3_beta_c18pos_81       12.95266      13.50327       15.53734
## x5112_b3_beta_c18pos_56       13.21042      13.77782       15.63822
##                         781.62_7.043 785.6542_8.953 796.5222_9.007
## x5107_b3_beta_c18pos_28     12.91163       19.29489       13.00877
## x5109_b3_beta_c18pos_81     12.93878       18.54979       13.00010
## x5112_b3_beta_c18pos_56     13.25657       18.78619       12.89030
##                         797.5914_8.07 799.6692_9.585 801.686_10.409
## x5107_b3_beta_c18pos_28      14.20812       17.69257       20.06030
## x5109_b3_beta_c18pos_81      14.18611       17.08662       19.54080
## x5112_b3_beta_c18pos_56      14.30850       17.43607       19.99056
##                         807.6349_8.948 809.6525_8.065 810.6564_8.03
## x5107_b3_beta_c18pos_28       16.29715       15.81183      15.16108
## x5109_b3_beta_c18pos_81       16.11296       15.72594      15.19539
## x5112_b3_beta_c18pos_56       15.93857       15.72482      15.23552
##                         811.6703_8.961 813.6854_10.226 827.6999_10.502
## x5107_b3_beta_c18pos_28       20.12794        19.05654        15.71804
## x5109_b3_beta_c18pos_81       19.20709        18.24428        15.20246
## x5112_b3_beta_c18pos_56       19.82178        18.58425        15.53037
##                         833.6507_8.971 835.6566_8.968 835.6664_10.22
## x5107_b3_beta_c18pos_28       16.88208       14.36366       16.87449
## x5109_b3_beta_c18pos_81       16.77536       14.08959       16.26508
## x5112_b3_beta_c18pos_56       17.03756       14.35579       16.51209
##                         902.7673_8.957 928.7831_8.964 1594.0976_6.869
## x5107_b3_beta_c18pos_28       12.56672       13.04733        12.09862
## x5109_b3_beta_c18pos_81       11.83950       12.61397        11.83166
## x5112_b3_beta_c18pos_56       12.12956       12.82448        11.78884
##                         162.1126_0.545 813.6866_9.902 1157.3434_6.852
## x5107_b3_beta_c18pos_28       17.23696       20.65068        12.79860
## x5109_b3_beta_c18pos_81       17.10793       19.67281        12.84831
## x5112_b3_beta_c18pos_56       17.04075       20.58214        13.12909
##                         1363.015_6.835 1511.145_6.854 1536.6252_6.856
## x5107_b3_beta_c18pos_28       11.43975       12.41331        12.11997
## x5109_b3_beta_c18pos_81       12.33854       11.73058        11.81181
## x5112_b3_beta_c18pos_56       11.90621       12.24789        12.34566
##                         699.5412_5.971 717.5903_7.018 805.6187_7.848
## x5107_b3_beta_c18pos_28       12.15782       15.52020       13.66922
## x5109_b3_beta_c18pos_81       11.89810       15.39155       13.45917
## x5112_b3_beta_c18pos_56       12.46739       15.37404       13.84118
##                         825.6815_9.335 834.5933_5.658
## x5107_b3_beta_c18pos_28       13.16572       12.83982
## x5109_b3_beta_c18pos_81       13.13477       13.01383
## x5112_b3_beta_c18pos_56       13.62055       12.85898
pheatmap(t(unpaired_t.tests_heatmap_data),
           scale = "row",
           cluster_rows = TRUE,
           annotation_col = anno_trt_row,
           annotation_colors = annotation_colors,
           cluster_cols = TRUE,
           show_colnames = TRUE,
           clustering_distance_rows = "euclidean",
           clustering_distance_cols = "euclidean",
         cutree_rows = 8,
         cutree_cols = 3,
           clustering_method = "ward.D2",
           color = colorRampPalette(c("#67a9cf", "#f7f7f7", "#ef8a62"))(16),
           main = "Heatmap of features significant in all unpaired t-test comparisons that overlap with sig ANOVA features across all treatment groups \nby Benjamoni-Hochberg corrected \np-values > 0.05 \nLipidomics C18 (+)")

# without clustering of cols
pheatmap(t(unpaired_t.tests_heatmap_data),
           scale = "row",
           cluster_rows = TRUE,
           annotation_col = anno_trt_row,
           annotation_colors = annotation_colors,
           cluster_cols = FALSE,
           show_colnames = TRUE,
           clustering_distance_rows = "euclidean",
           clustering_distance_cols = "euclidean",
         cutree_rows = 8,
         cutree_cols = 3,
           clustering_method = "ward.D2",
           color = colorRampPalette(c("#67a9cf", "#f7f7f7", "#ef8a62"))(16),
           main = "Heatmap of features significant in all unpaired t-test comparisons that overlap with sig ANOVA features across all treatment groups \nby Benjamoni-Hochberg corrected \np-values > 0.05 \nLipidomics C18 (+)")

Paired

Red
red_paired_t.tests_heatmap_data <- df_for_stats_wide %>%
  filter(treatment == "red") %>%
  dplyr::select(sample, period, treatment, sex,
                all_of(red_sig_ANOVA_overlap_paired$mz_rt)) %>%
  mutate_at("period", as.factor) %>%
  column_to_rownames("sample")
# create annotation rows for pre/post interventions and wrangle
# select rownames (samples) from heatmap metadata (also ensures the order is correct)
anno_red_row_paired <- as.data.frame(rownames(red_paired_t.tests_heatmap_data))


# pull period into a column
anno_red_row_paired$period <- red_paired_t.tests_heatmap_data$period
anno_red_row_paired$sex <- red_paired_t.tests_heatmap_data$sex

# select cols
anno_red_row_paired <- anno_red_row_paired %>%
  dplyr::select(period, sex)

# get rownames to match heatmap again
rownames(anno_red_row_paired) <- rownames(red_paired_t.tests_heatmap_data)
# create annotation colors
red_annotation_colors <- list(period = c("b1" = "darksalmon",
                                        "b3" = "red"),
                              sex = c("M" = "aquamarine2",
                                      "F" = "pink"))
pheatmap(t(red_paired_t.tests_heatmap_data[,-c(1:3)]),
           scale = "row",
           cluster_rows = TRUE,
           annotation_col = anno_red_row_paired,
           annotation_colors = red_annotation_colors,
           cluster_cols = TRUE,
           show_rownames = TRUE,
           clustering_distance_rows = "euclidean",
           clustering_distance_cols = "euclidean",
           cutree_rows = 8,
         cutree_cols = 2,
           clustering_method = "ward.D2",
           color = colorRampPalette(c("#67a9cf", "#f7f7f7", "#ef8a62"))(16),
           main = "Heatmap of significant features pre- vs. post-High-Lyc paired t-test \nsig in ANOVA across all treatment groups \nby Benjamoni-Hochberg corrected p-values > 0.05 \nBackground diet effect removed \nLipidomics C18 (+)")

Beta
beta_paired_t.tests_heatmap_data <- df_for_stats_wide %>%
  filter(treatment == "beta") %>%
  dplyr::select(sample, period, treatment, sex,
                all_of(beta_sig_ANOVA_overlap_paired$mz_rt)) %>%
  mutate_at("period", as.factor) %>%
  column_to_rownames("sample")
# create annotation rows for pre/post interventions and wrangle
# select rownames (samples) from heatmap metadata (also ensures the order is correct)
anno_beta_row_paired <- as.data.frame(rownames(beta_paired_t.tests_heatmap_data))


# pull period into a column
anno_beta_row_paired$period <- beta_paired_t.tests_heatmap_data$period
anno_beta_row_paired$sex <- beta_paired_t.tests_heatmap_data$sex

# select cols
anno_beta_row_paired <- anno_beta_row_paired %>%
  dplyr::select(sex, period)

# get rownames to match heatmap again
rownames(anno_beta_row_paired) <- rownames(beta_paired_t.tests_heatmap_data)
# create annotation colors
beta_annotation_colors <- list(period = c("b1" = "bisque",
                                        "b3" = "darkorange"),
                              sex = c("M" = "aquamarine2",
                                      "F" = "pink"))
pheatmap(t(beta_paired_t.tests_heatmap_data[,-c(1:3)]),
           scale = "row",
           cluster_rows = TRUE,
           annotation_col = anno_beta_row_paired,
           annotation_colors = beta_annotation_colors,
           cluster_cols = TRUE,
           show_rownames = TRUE,
           clustering_distance_rows = "euclidean",
           clustering_distance_cols = "euclidean",
           cutree_rows = 10,
         cutree_cols = 5,
           clustering_method = "ward.D2",
           color = colorRampPalette(c("#67a9cf", "#f7f7f7", "#ef8a62"))(16),
           main = "Heatmap of significant features pre- vs. post-High-beta paired t-test \nsig in ANOVA across all treatment groups \nby Benjamoni-Hochberg corrected p-values > 0.05 \nBackground diet effect removed \nLipidomics C18 (+)")

Tomato
tom_paired_t.tests_heatmap_data <- df_for_stats_wide %>%
  filter(treatment != "control") %>%
  dplyr::select(sample, period, tomato_or_control, sex,
                all_of(tom_sig_ANOVA_overlap_paired$mz_rt)) %>%
  mutate_at("period", as.factor) %>%
  column_to_rownames("sample")
# create annotation rows for pre/post interventions and wrangle
# select rownames (samples) from heatmap metadata (also ensures the order is correct)
anno_tom_row_paired <- as.data.frame(rownames(tom_paired_t.tests_heatmap_data))


# pull period into a column
anno_tom_row_paired$period <- tom_paired_t.tests_heatmap_data$period
anno_tom_row_paired$sex <- tom_paired_t.tests_heatmap_data$sex

# select cols
anno_tom_row_paired <- anno_tom_row_paired %>%
  dplyr::select(period, sex)

# get rownames to match heatmap again
rownames(anno_tom_row_paired) <- rownames(tom_paired_t.tests_heatmap_data)
# create annotation colors
tom_annotation_colors <- list(period = c("b1" = "darksalmon",
                                        "b3" = "tomato"),
                              sex = c("M" = "aquamarine2",
                                      "F" = "pink"))
pheatmap(t(tom_paired_t.tests_heatmap_data[,-c(1:3)]),
           scale = "row",
           cluster_rows = TRUE,
           annotation_col = anno_tom_row_paired,
           annotation_colors = tom_annotation_colors,
           cluster_cols = TRUE,
           show_rownames = TRUE,
           clustering_distance_rows = "euclidean",
           clustering_distance_cols = "euclidean",
           cutree_rows = 8,
         cutree_cols = 2,
           clustering_method = "ward.D2",
           color = colorRampPalette(c("#67a9cf", "#f7f7f7", "#ef8a62"))(16),
           main = "Heatmap of significant features pre- vs. post-Tomato paired t-test \nsig in ANOVA across all treatment groups \nby Benjamoni-Hochberg corrected p-values > 0.05 \nBackground diet effect removed \nLipidomics C18 (+)")

Joined lists

df_for_stats <- df_for_stats %>%
  # add rel abund levels back since this got lost during drift correction
  mutate(rel_abund = 2^(rel_abund_log2))

Using t tests sig

Tomato effects

How many features are significant (with background diet effect removed)

dim(sig_paired_tom_rmBG)
## [1] 460  20

Which features are significant in unpaired t test comparisons?

# select only significant features from pre v post tomato effect that have a matching key to significant features post tomato v. post control comparison

overall_tomato_effect <- semi_join(sig_paired_tom_rmBG,
                                   sig_tom_v_ctrl_t.test,
                                  by = "mz_rt")

dim(overall_tomato_effect)
## [1] 14 20

Summary stats

(FC_tomato_effect <- df_for_stats %>%
  filter(mz_rt %in% overall_tomato_effect$mz_rt) %>%
  select(subject, treatment_period, mz_rt, rel_abund) %>%
  group_by(mz_rt) %>%
  pivot_wider(names_from = treatment_period,
              values_from = rel_abund) %>%
  mutate(control_FC = control_b3/control_b1,
         beta_FC = beta_b3/beta_b1,
         red_FC = red_b3/red_b1) %>%
  summarize(mean_control_FC = mean(control_FC, na.rm = TRUE),
            mean_beta_FC = mean(beta_FC, na.rm = TRUE),
            mean_red_FC = mean(red_FC, na.rm = TRUE),
            mean_ctrl_beta_FC = mean(mean(beta_FC, na.rm = TRUE)/mean(control_FC, na.rm = TRUE)),
            mean_ctrl_red_FC = mean(mean(red_FC, na.rm = TRUE)/mean(control_FC, na.rm = TRUE)),
            mean_red_beta_FC = mean(mean(beta_FC, na.rm = TRUE)/mean(red_FC, na.rm = TRUE))))
## # A tibble: 14 × 7
##    mz_rt           mean_control_FC mean_beta_FC mean_red_FC mean_ctrl_beta_FC
##    <chr>                     <dbl>        <dbl>       <dbl>             <dbl>
##  1 1195.8336_6.857           1.01         1.05        1.05              1.04 
##  2 1585.1303_6.711           1.24         1.13        1.26              0.913
##  3 1596.1232_6.714           1.23         1.23        1.22              1.00 
##  4 1611.8348_9.901           0.976        0.878       0.981             0.900
##  5 1619.2973_8.957           0.972        0.874       0.909             0.900
##  6 1624.8418_9.901           1.21         1.22        1.25              1.01 
##  7 1635.8345_9.901           1.11         1.17        1.16              1.05 
##  8 1636.3352_9.901           1.25         1.22        1.10              0.978
##  9 536.437_11.201            0.806        2.62        0.893             3.25 
## 10 704.3938_6.501            1.05         0.944       0.896             0.897
## 11 744.5538_6.51             1.09         1.16        1.08              1.07 
## 12 774.5404_8.982            1.14         1.20        1.17              1.05 
## 13 794.6868_10.627           1.02         0.937       0.925             0.920
## 14 813.6866_9.902            1.13         1.19        1.16              1.05 
## # ℹ 2 more variables: mean_ctrl_red_FC <dbl>, mean_red_beta_FC <dbl>

Compile list

# combine cluster and FC info
tom_effect_list <- left_join(FC_tomato_effect, 
                             cluster_features,
                             by = "mz_rt") %>%
  select(mz_rt, mz, rt, Cluster_ID, Cluster_features, Cluster_size, everything())
# add in averages for each group + timepoint
tom_effect_list <-
  left_join(tom_effect_list,
            (df_for_stats %>%
               group_by(treatment_period, mz_rt) %>%
               summarize(mean_rel_abund = mean(rel_abund)) %>%
               pivot_wider(names_from = treatment_period, values_from = mean_rel_abund)),
            by = "mz_rt")

head(tom_effect_list, n=1)
## # A tibble: 1 × 19
##   mz_rt        mz    rt Cluster_ID Cluster_features Cluster_size mean_control_FC
##   <chr>     <dbl> <dbl> <chr>      <chr>                   <dbl>           <dbl>
## 1 1195.833… 1196.  6.86 1195.8336… 1195.8336_6.857             1            1.01
## # ℹ 12 more variables: mean_beta_FC <dbl>, mean_red_FC <dbl>,
## #   mean_ctrl_beta_FC <dbl>, mean_ctrl_red_FC <dbl>, mean_red_beta_FC <dbl>,
## #   MPA <dbl>, beta_b1 <dbl>, beta_b3 <dbl>, control_b1 <dbl>,
## #   control_b3 <dbl>, red_b1 <dbl>, red_b3 <dbl>

Export list

write_csv(tom_effect_list, "effect lists/tomato-effect.csv")

Boxplots

# make comparison list for comparison tests
my_comparisons <- list( c("beta_b1", "beta_b3"), 
                        c("red_b1", "red_b3"),
                        c("control_b1", "control_b3") )
# subset df for uniquely significant features
justT_tom_effect_df <- df_for_stats_wide %>%
  dplyr::select(c(1:21),
                (all_of(overall_tomato_effect$mz_rt)))

# make tidy df
justT_tom_effect_df_tidy <- justT_tom_effect_df %>%
  pivot_longer(cols = 22:ncol(.),
               names_to = "mz_rt",
               values_to = "rel_abund_log2")
# fix factor levels for time points
justT_tom_effect_df_tidy$treatment_period <- factor(justT_tom_effect_df_tidy$treatment_period,
                              levels = c("control_b1", "control_b3", 
                                         "beta_b1", "beta_b3",
                                         "red_b1", "red_b3"))

# check
levels(justT_tom_effect_df_tidy$treatment_period)  
## [1] "control_b1" "control_b3" "beta_b1"    "beta_b3"    "red_b1"    
## [6] "red_b3"
justT_tom_effect_df_tidy$treatment <- factor(justT_tom_effect_df_tidy$treatment,
                              levels = c("control", "beta", "red"))
justT_tom_effect_df_tidy %>% 
  ggplot(aes(x = treatment_period, y = rel_abund_log2, fill = treatment_period)) +
  geom_boxplot() +
  scale_fill_manual(values = c("darkseagreen2", "darkgreen", 
                               "tan", "orangered2",
                               "lavenderblush3", "darkred"),
                    labels = c("pre control", "post control",
                               "pre beta", "post beta",
                               "pre lyc", "post lyc")) +
  scale_x_discrete(labels = c("", "", "", "", "", "")) +
  geom_line(aes(group = subject, colour = subject), size = 0.2) +
  theme_classic(base_size = 12, base_family = "sans") +
  facet_wrap(vars(mz_rt), scales = "free_y", ncol = 4) + 
  stat_compare_means(comparisons = my_comparisons, method = "t.test", paired = TRUE, p.adjust.method = "BH") +
  labs(x = "",
       y = "Log2 transformed relative abundance",
       title = "Tomato effect - significant when compared to control, also significant pre and post tomato",
       subtitle = "FDR adj. p-values from T-tests")

Beta effects

dim(sig_paired_beta_rmBG)
## [1] 342  20

Which features are significant in paired t test comparisons for beta, but not significant in the same direction for control?

Features that are significant in both pre- vs. post. beta AND post-beta vs. post-control

# select features that are only significant post beta v. post control comparison
overall_beta_effect <- semi_join(sig_paired_beta_rmBG,
                                 sig_beta_v_ctrl_t.test,
                                 by = "mz_rt")
dim(overall_beta_effect)
## [1]  8 20
overall_unique_beta_effect <- left_join(overall_beta_effect,
                                        sig_beta_v_red_t.test,
                                        by = "mz_rt")
dim(overall_unique_beta_effect)
## [1]  8 29

Summary stats

(FC_beta_effect <- df_for_stats %>%
  filter(mz_rt %in% overall_beta_effect$mz_rt) %>%
  select(subject, treatment_period, mz_rt, rel_abund) %>%
  group_by(mz_rt) %>%
  pivot_wider(names_from = treatment_period,
              values_from = rel_abund) %>%
  mutate(control_FC = control_b3/control_b1,
         beta_FC = beta_b3/beta_b1,
         red_FC = red_b3/red_b1) %>%
  summarize(mean_control_FC = mean(control_FC, na.rm = TRUE),
            mean_beta_FC = mean(beta_FC, na.rm = TRUE),
            mean_red_FC = mean(red_FC, na.rm = TRUE),
            mean_ctrl_beta_FC = mean(mean(beta_FC, na.rm = TRUE)/mean(control_FC, na.rm = TRUE)),
            mean_ctrl_red_FC = mean(mean(red_FC, na.rm = TRUE)/mean(control_FC, na.rm = TRUE)),
            mean_red_beta_FC = mean(mean(beta_FC, na.rm = TRUE)/mean(red_FC, na.rm = TRUE))))
## # A tibble: 8 × 7
##   mz_rt           mean_control_FC mean_beta_FC mean_red_FC mean_ctrl_beta_FC
##   <chr>                     <dbl>        <dbl>       <dbl>             <dbl>
## 1 1002.658_3.079            0.988        1.10        0.971             1.11 
## 2 1611.8348_9.901           0.976        0.878       0.981             0.900
## 3 1618.2939_8.956           0.997        0.859       1.01              0.862
## 4 1619.2973_8.957           0.972        0.874       0.909             0.900
## 5 536.437_11.201            0.806        2.62        0.893             3.25 
## 6 774.5404_8.982            1.14         1.20        1.17              1.05 
## 7 796.5222_9.007            1.12         1.16        1.14              1.04 
## 8 835.6566_8.968            1.12         1.13        1.07              1.01 
## # ℹ 2 more variables: mean_ctrl_red_FC <dbl>, mean_red_beta_FC <dbl>

Compile list

# combine cluster and FC info
beta_effect_list <- left_join(FC_beta_effect, 
                              cluster_features,
                              by = "mz_rt") %>%
  select(mz_rt, mz, rt, Cluster_ID, Cluster_features, Cluster_size, everything())
# add in averages for each group + timepoint
beta_effect_list <-
  left_join(beta_effect_list,
            (df_for_stats %>%
               group_by(treatment_period, mz_rt) %>%
               summarize(mean_rel_abund = mean(rel_abund)) %>%
               pivot_wider(names_from = treatment_period, values_from = mean_rel_abund)),
            by = "mz_rt")

head(beta_effect_list, n=1)
## # A tibble: 1 × 19
##   mz_rt        mz    rt Cluster_ID Cluster_features Cluster_size mean_control_FC
##   <chr>     <dbl> <dbl> <chr>      <chr>                   <dbl>           <dbl>
## 1 1002.658… 1003.  3.08 1002.658_… 1002.658_3.079              1           0.988
## # ℹ 12 more variables: mean_beta_FC <dbl>, mean_red_FC <dbl>,
## #   mean_ctrl_beta_FC <dbl>, mean_ctrl_red_FC <dbl>, mean_red_beta_FC <dbl>,
## #   MPA <dbl>, beta_b1 <dbl>, beta_b3 <dbl>, control_b1 <dbl>,
## #   control_b3 <dbl>, red_b1 <dbl>, red_b3 <dbl>

Export list

write_csv(beta_effect_list, "effect lists/beta-effect.csv")

Boxplots

# subset df for uniquely significant features
justT_beta_effect_df <- df_for_stats_wide %>%
  dplyr::select(c(1:21),
                (all_of(overall_beta_effect$mz_rt)))

# make tidy df
justT_beta_effect_df_tidy <- justT_beta_effect_df %>%
  pivot_longer(cols = 22:ncol(.),
               names_to = "mz_rt",
               values_to = "rel_abund_log2")
# fix factor levels for time points
justT_beta_effect_df_tidy$treatment_period <- factor(justT_beta_effect_df_tidy$treatment_period,
                              levels = c("control_b1", "control_b3", 
                                         "beta_b1", "beta_b3",
                                         "red_b1", "red_b3"))

# check
levels(justT_beta_effect_df_tidy$treatment_period)  
## [1] "control_b1" "control_b3" "beta_b1"    "beta_b3"    "red_b1"    
## [6] "red_b3"
justT_beta_effect_df_tidy$treatment <- factor(justT_beta_effect_df_tidy$treatment,
                              levels = c("control", "beta", "red"))

justT_beta_effect_df_tidy$period <- factor(justT_beta_effect_df_tidy$period,
                              levels = c("b1", "b3"))
justT_beta_effect_df_tidy %>% 
  ggplot(aes(x = treatment_period, y = rel_abund_log2, fill = treatment_period)) +
  geom_boxplot() +
  scale_fill_manual(values = c("darkseagreen2", "darkgreen", 
                               "tan", "orangered2",
                               "lavenderblush3", "darkred"),
                    labels = c("pre control", "post control",
                               "pre beta", "post beta",
                               "pre lyc", "post lyc")) +
  scale_x_discrete(labels = c("", "", "", "", "", "")) +
  geom_line(aes(group = subject, colour = subject), size = 0.2) +
  theme_classic(base_size = 12, base_family = "sans") +
  facet_wrap(vars(mz_rt), scales = "free_y", nrow = 3) + 
  stat_compare_means(comparisons = my_comparisons, method = "t.test", paired = TRUE, p.adjust.method = "BH") +
  labs(x = "",
       y = "Log2 transformed relative abundance",
       title = "High beta juice effect - significant when compared to control, also significant pre and post beta juice",
       subtitle = "FDR adj. p-values from T-tests")

m/z 1002
(mz1002_bps <- justT_beta_effect_df_tidy %>% 
   filter(mz_rt == "1002.658_3.079") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "LPC 16:0 levels at each timepoint",
       subtitle = "m/z 1002.658, RT 3.079 min") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none"))

ggsave("plots and figures/mz1002bps.svg", height = 6, width = 8)
beta-carotene
# for Gordon conference
(bC_bps <- justT_beta_effect_df_tidy %>% 
   filter(mz_rt == "536.437_11.201") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "\u03b2-Carotene levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none"))

bC and 1002
bC_bps + mz1002_bps + plot_layout(axes = "collect")

ggsave("plots and figures/bCandLPC16-bps.svg", height = 6, width = 12)
1002 investigations
df_for_stats$period <- factor(df_for_stats$period,
                              levels = c("b1", "b3"))

df_for_stats %>% 
   filter(mz_rt == "496.342_3.082") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "    
496.342_3.082 levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none")

I am plotting this mass because I believe it is LPC 16:0, which is what I believe m/z 1002 is an adduct for. These levels (for m/z 496) are unchanging, but when you look at the chromatograms, this mass is oversaturated and may be outside of range of linearity, possibly the reason why this mass doesn’t seem to change

Next, we’ll look at 991 which is likely the the dimer form of m/z 496

991.6743_3.082

df_for_stats %>% 
   filter(mz_rt == "991.6743_3.082") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "    
991.6743_3.082 levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none")

df_for_stats %>% 
   filter(mz_rt == "498.346_3.082") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "    
498.346_3.082 levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none")

cor(x = df_for_stats_wide$`496.342_3.082`, y = df_for_stats_wide$`1002.658_3.079`)
## [1] 0.6446398
cor(x = df_for_stats_wide$`991.6743_3.082`, y = df_for_stats_wide$`1002.658_3.079`)
## [1] 0.6569136
cor(x = df_for_stats_wide$`991.6743_3.082`, y = df_for_stats_wide$`1002.658_3.079`)
## [1] 0.6569136
835 investigation

Here, I’m trying to see if m/z 835 is really the C14 isotopologue of m.z 833. Let’s look to see if trends are similar.

df_for_stats %>% 
   filter(mz_rt %in% c("833.6507_8.971", "835.6566_8.968")) %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = c("treatment", "mz_rt"), 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "    
833.6507_8.971, 835.6566_8.968 levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none")

cor(df_for_stats_wide$`833.6507_8.971`, df_for_stats_wide$`835.6566_8.968`)
## [1] 0.9359787

These definitely should have been clustered!

Red effects

dim(sig_paired_red_rmBG)
## [1] 195  20
# select features that are only significant post red v. post control comparison

overall_red_effect <- semi_join(sig_paired_red_rmBG,
                                 sig_red_v_ctrl_t.test,
                                  by = "mz_rt")
dim(overall_red_effect)
## [1]  2 20
# select features that are only significant post tomato v. post control comparison

overall_unique_red_effect <- left_join(overall_red_effect,
                                        sig_beta_v_red_t.test,
                                        by = "mz_rt")
dim(overall_unique_red_effect)
## [1]  2 29
head(overall_unique_red_effect)
## # A tibble: 2 × 29
##   mz_rt .y..red group1.red group2.red n1.red n2.red statistic.red df.red   p.red
##   <chr> <chr>   <chr>      <chr>       <int>  <int>         <dbl>  <dbl>   <dbl>
## 1 536.… rel_ab… b1         b3             12     12         -8.54     11 3.5 e-6
## 2 760.… rel_ab… b1         b3             12     12         -2.32     11 4.04e-2
## # ℹ 20 more variables: p.signif.red <chr>, .y..ctrl <chr>, group1.ctrl <chr>,
## #   group2.ctrl <chr>, n1.ctrl <int>, n2.ctrl <int>, statistic.ctrl <dbl>,
## #   df.ctrl <dbl>, p.ctrl <dbl>, p.signif.ctrl <chr>, sign <dbl>, .y. <chr>,
## #   group1 <chr>, group2 <chr>, n1 <int>, n2 <int>, statistic <dbl>, df <dbl>,
## #   p <dbl>, p.signif <chr>

Summary stats

(FC_red_effect <- df_for_stats %>%
  filter(mz_rt %in% overall_red_effect$mz_rt) %>%
  select(subject, treatment_period, mz_rt, rel_abund) %>%
  group_by(mz_rt) %>%
  pivot_wider(names_from = treatment_period,
              values_from = rel_abund) %>%
  mutate(control_FC = control_b3/control_b1,
         beta_FC = beta_b3/beta_b1,
         red_FC = red_b3/red_b1) %>%
  summarize(mean_control_FC = mean(control_FC, na.rm = TRUE),
            mean_beta_FC = mean(beta_FC, na.rm = TRUE),
            mean_red_FC = mean(red_FC, na.rm = TRUE),
            mean_ctrl_beta_FC = mean(mean(beta_FC, na.rm = TRUE)/mean(control_FC, na.rm = TRUE)),
            mean_ctrl_red_FC = mean(mean(red_FC, na.rm = TRUE)/mean(control_FC, na.rm = TRUE)),
            mean_red_beta_FC = mean(mean(beta_FC, na.rm = TRUE)/mean(red_FC, na.rm = TRUE))))
## # A tibble: 2 × 7
##   mz_rt          mean_control_FC mean_beta_FC mean_red_FC mean_ctrl_beta_FC
##   <chr>                    <dbl>        <dbl>       <dbl>             <dbl>
## 1 536.437_10.971           0.547        0.690        2.62              1.26
## 2 760.4925_6.98            0.980        0.994        1.05              1.01
## # ℹ 2 more variables: mean_ctrl_red_FC <dbl>, mean_red_beta_FC <dbl>

Compile list

# combine cluster and FC info
red_effect_list <- left_join(FC_red_effect, 
                             cluster_features,
                             by = "mz_rt") %>%
  select(mz_rt, mz, rt, Cluster_ID, Cluster_features, Cluster_size, everything())
# add in averages for each group + timepoint
red_effect_list <-
  left_join(red_effect_list,
            (df_for_stats %>%
               group_by(treatment_period, mz_rt) %>%
               summarize(mean_rel_abund = mean(rel_abund)) %>%
               pivot_wider(names_from = treatment_period, values_from = mean_rel_abund)),
            by = "mz_rt")

head(red_effect_list, n=1)
## # A tibble: 1 × 19
##   mz_rt        mz    rt Cluster_ID Cluster_features Cluster_size mean_control_FC
##   <chr>     <dbl> <dbl> <chr>      <chr>                   <dbl>           <dbl>
## 1 536.437_…  536.  11.0 Cluster_5… 536.437_10.971;…            2           0.547
## # ℹ 12 more variables: mean_beta_FC <dbl>, mean_red_FC <dbl>,
## #   mean_ctrl_beta_FC <dbl>, mean_ctrl_red_FC <dbl>, mean_red_beta_FC <dbl>,
## #   MPA <dbl>, beta_b1 <dbl>, beta_b3 <dbl>, control_b1 <dbl>,
## #   control_b3 <dbl>, red_b1 <dbl>, red_b3 <dbl>

Export list

write_csv(red_effect_list, "effect lists/red-effect.csv")

Boxplots

# subset df for uniquely significant features
justT_red_effect_df <- df_for_stats_wide %>%
  dplyr::select(c(1:21),
                (all_of(overall_unique_red_effect$mz_rt)))

# make tidy df
justT_red_effect_df_tidy <- justT_red_effect_df %>%
  pivot_longer(cols = 22:ncol(.),
               names_to = "mz_rt",
               values_to = "rel_abund_log2")
# fix factor levels for time points
justT_red_effect_df_tidy$treatment_period <- factor(justT_red_effect_df_tidy$treatment_period,
                              levels = c("control_b1", "control_b3", 
                                         "beta_b1", "beta_b3",
                                         "red_b1", "red_b3"))

# check
levels(justT_red_effect_df_tidy$treatment_period)  
## [1] "control_b1" "control_b3" "beta_b1"    "beta_b3"    "red_b1"    
## [6] "red_b3"
justT_red_effect_df_tidy$treatment <- factor(justT_red_effect_df_tidy$treatment,
                              levels = c("control", "beta", "red"))

levels(justT_red_effect_df_tidy$treatment)
## [1] "control" "beta"    "red"
justT_red_effect_df_tidy$period <- factor(justT_red_effect_df_tidy$period,
                              levels = c("b1", "b3"))
justT_red_effect_df_tidy %>% 
  ggplot(aes(x = treatment_period, y = rel_abund_log2, fill = treatment_period)) +
  geom_boxplot() +
  scale_fill_manual(values = c("darkseagreen2", "darkgreen", 
                               "tan", "orangered2",
                               "lavenderblush3", "darkred"),
                    labels = c("pre control", "post control",
                               "pre beta", "post beta",
                               "pre lyc", "post lyc")) +
  scale_x_discrete(labels = c("", "", "", "", "", "")) +
  geom_line(aes(group = subject, colour = subject), size = 0.2) +
  theme_classic(base_size = 12, base_family = "sans") +
  facet_wrap(vars(mz_rt), scales = "free_y") + 
  stat_compare_means(comparisons = my_comparisons, method = "t.test", paired = TRUE, p.adjust.method = "BH") +
  labs(x = "",
       y = "Log2 transformed relative abundance",
       title = "High lyc effect - significant when compared to control, \nsignificant pre vs post red",
       subtitle = "FDR adj. p-values from T-tests")

lyc
(lycbps <- justT_red_effect_df_tidy %>% 
   filter(mz_rt == "536.437_10.971") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "    
Lycopene levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none"))

m/z760
(mz760bps <- justT_red_effect_df_tidy %>% 
   filter(mz_rt == "760.4925_6.98") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "PC levels at each timepoint",
       subtitle = "m/z 760.4925, RT 6.98 min.") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none"))

lyc + m/z760
lycbps + mz760bps + plot_layout(axes = "collect")

ggsave("plots and figures/LYCandmz760-bps.svg", height = 8, width = 12)
760 investigation

This feature seems to be getting massed by another mass (760.5281). Let’s see if the levels are comparable

df_for_stats %>% 
   filter(mz_rt == "760.5281_6.984") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "    
760.5281_6.984 levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none")

It turns out that the feature masking my compound is a c14 isotopologue of 758.5734

df_for_stats %>% 
   filter(mz_rt == "758.5734_6.982") %>%
  ggpaired(x = "period", y = "rel_abund_log2", fill = "treatment", 
           line.color = "gray", 
           line.size = 1, 
           facet.by = "treatment", 
           short.panel.labs = FALSE, panel.labs = list(treatment = c("Control", "High \n\u03b2-Carotene", "High \nLycopene"))) +
  scale_fill_manual(values = c("lightgreen", 
                               "orange",
                               "red"),
                    labels = c("Control",
                               "High \u03b2-Carotene",
                               "High Lycopene"),
                    name = "Treatment") +
   scale_x_discrete(labels = c("b1" = "pre",
                               "b3" = "post")) +
  geom_line(aes(group = subject), colour = "gray", linewidth = 0.15) +
  theme_classic(base_size = 18, base_family = "sans") +
  labs(x = "",
       y = "Log2 relative abundance",
       title = "    
758.5734_6.982 levels at each timepoint") +
   stat_compare_means(method = "t.test", paired = TRUE) +
   theme(legend.position = "none")

Feature annotation

Wrangle

annotated_df <- df_for_stats %>%
  separate(col = mz_rt,
           into = c("mz", "rt"),
           sep = "_") %>%
  select(mz, rt) %>%
  unique()
# annotated_df <- lipidr::add_sample_annotation(annotated_df$mz)

Export

Metabolite df

write_csv(DC_imp_metabind_clust_log2_noQCs, "final-omics-df-lipidomics-pos.csv",col_names = TRUE)
LS0tCnRpdGxlOiAiYmxvb2QgcGxhc21hIGxpcGlkb21pY3MgLSBEYXRhIGFuYWx5c2lzICgrKSIKYXV0aG9yOiAiTWFyaWEgU2hvbG9sYSIKZGF0ZTogIjIwMjQtMDYtMDMgYW5kIHNvIG9uIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICBoaWdobGlnaHQ6IGthdGUKICAgIHRoZW1lOiB5ZXRpCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2RlcHRoOiA1CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgICBmaWdfd2lkdGg6IDcKZWRpdG9yX29wdGlvbnM6IAogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBlY2hvPVRSVUUpIApgYGAKCiMgTG9hZCBsaWJyYXJpZXMKCmBgYHtyLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRX0KCmxpYnJhcnkocmVhZHhsKSAjIGZvciByZWFkaW5nIGluIGV4Y2VsIGZpbGVzCmxpYnJhcnkoamFuaXRvcikgIyBkYXRhIGNoZWNrcyBhbmQgY2xlYW5pbmcKbGlicmFyeShnbHVlKSAjIGZvciBlYXN5IHBhc3RpbmcKbGlicmFyeShGYWN0b01pbmVSKSAjIGZvciBQQ0EKbGlicmFyeShmYWN0b2V4dHJhKSAjIGZvciBQQ0EKbGlicmFyeShyc3RhdGl4KSAjIGZvciBzdGF0cwpsaWJyYXJ5KHBoZWF0bWFwKSAjIGZvciBoZWF0bWFwcwpsaWJyYXJ5KHBsb3RseSkgIyBmb3IgaW50ZXJhY3RpdmUgcGxvdHMKbGlicmFyeShodG1sd2lkZ2V0cykgIyBmb3Igc2F2aW5nIGludGVyYWN0aXZlIHBsb3RzCmxpYnJhcnkoZGV2dG9vbHMpCmxpYnJhcnkobm90YW1lKSAjIHVzZWQgZm9yIGZlYXR1cmUgY2x1c3RlcmluZwpsaWJyYXJ5KGRvUGFyYWxsZWwpCmxpYnJhcnkoaWdyYXBoKSAjIGZlYXR1cmUgY2x1c3RlcmluZwpsaWJyYXJ5KGdncHVicikgIyB2aXN1YWxpemF0aW9ucwpsaWJyYXJ5KGtuaXRyKSAjIGNsZWFuIHRhYmxlIHByaW50aW5nCmxpYnJhcnkocm1hcmtkb3duKQpsaWJyYXJ5KGNvcnJyKQpsaWJyYXJ5KGdnY29ycnBsb3QpCmxpYnJhcnkoZ2d0aGVtZXMpCmxpYnJhcnkoZ2d0ZXh0KQpsaWJyYXJ5KFBDQXRvb2xzKQpsaWJyYXJ5KHBhdGh2aWV3KSAjIGZvciBmdW5jdGlvbmFsIGFuYWx5c2lzIGFuZCBLRUdHIGFubm90YXRpb24KbGlicmFyeShtaXhPbWljcykgI211bHRpbGV2ZWwgUENBIGFuZCBzUExTLURBCmxpYnJhcnkobGlwaWRyKQpsaWJyYXJ5KHBhdGNod29yaykKbGlicmFyeSh0aWR5dmVyc2UpICMgZm9yIGV2ZXJ5dGhpbmcKYGBgCgojIFJlYWQgaW4gZGF0YQoKYGBge3J9CiMgcmF3IGZpbHRlcmVkIG1ldGFib2xvbWljcyBkYXRhIApvbWljc2RhdGEgPC0gcmVhZF9jc3YoImZlYXR1cmVzX3Bvc3QtZGF0YS1maWx0ZXJpbmcuY3N2IikgJT4lCiAgY2xlYW5fbmFtZXMoKQoKIyBtZXRhZGF0YQptZXRhZGF0YSA8LSByZWFkX2NzdigiLi4vLi4vLi4vbWV0YWRhdGEtbmV3LmNzdiIpCgojIGNhcm90ZW5vaWRzIGRhdGEKY2Fyb3Rlbm9pZHMgPC0gcmVhZF9leGNlbCgiLi4vLi4vLi4vUGxhc21hIGNhcm90X3JldF9hcG8gbGV2ZWxzLnhsc3giLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0ID0gIkIxYW5kQjMiKSAlPiUKICBjbGVhbl9uYW1lcygpCmBgYAoKIyBXcmFuZ2xlIGRhdGEKCiMjIE1ldGFkYXRhCgpgYGB7cn0KY2Fyb3Rlbm9pZHMgPC0gY2Fyb3Rlbm9pZHMgJT4lCiAgbXV0YXRlKHRvdGFsX2Nhcm90ZW5vaWRzID0gYl9jX25tb2xfbF9wbGFzbWEgKyBseWNfbm1vbF9sX3BsYXNtYSArIHJldGlub2xfbm1vbF9sX3BsYXNtYSArIGFwbzEzb25lX25tb2xfbF9wbGFzbWEpCmBgYAoKIyMgRmVhdHVyZSBkYXRhCgpgYGB7cn0KIyBob3cgbWFueSBmZWF0dXJlcwpucm93KG9taWNzZGF0YSkKYGBgCgpgYGB7cn0KIyBhcmUgdGhlcmUgYW55IGR1cGxpY2F0ZXM/Cm9taWNzZGF0YSAlPiUgZ2V0X2R1cGVzKG16X3J0KQpgYGAKCmBgYHtyfQojIHJlbW92ZSBkdXBlcwpvbWljc2RhdGEgPC0gb21pY3NkYXRhICU+JSAKICBkaXN0aW5jdChtel9ydCwgLmtlZXBfYWxsID0gVFJVRSkKCiMgY2hlY2sgYWdhaW4gZm9yIGR1cGVzCm9taWNzZGF0YSAlPiUgZ2V0X2R1cGVzKG16X3J0KQoKIyBob3cgbWFueSBmZWF0dXJlcwpucm93KG9taWNzZGF0YSkKYGBgCgpTb21ldGltZXMgYSB3ZWlyZCBsb2dpY2FsIGNvbHVtbiAobGdsKSBjb21lcyB1cCBpbiBteSBkYXRhLiBMZXQncyBjaGVjayBpZiBpdCdzIHRoZXJlCgpgYGB7cn0KY29sbmFtZXMob21pY3NkYXRhKQpgYGAKCmBgYHtyfQojIHJlbW92ZSBsZ2wgY29sdW1uCm9taWNzZGF0YSA8LSBvbWljc2RhdGEgJT4lCiAgZHBseXI6OnNlbGVjdCghd2hlcmUoaXMubG9naWNhbCkpIAoKY29sbmFtZXMob21pY3NkYXRhKQpgYGAKCiMjIyBUaWR5CgpgYGB7cn0KIyBjcmVhdGUgbG9uZyBkZiBmb3Igb21pY3MgZGYKb21pY3NkYXRhX3RpZHkgPC0gb21pY3NkYXRhICU+JQogIHBpdm90X2xvbmdlcihjb2xzID0gMzpuY29sKC4pLAogICAgICAgICAgICAgICBuYW1lc190byA9ICJzYW1wbGUiLAogICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAicGVha19oZWlnaHQiKSAlPiUKICBtdXRhdGUoc2FtcGxlMiA9IHNhbXBsZSkgJT4lCiAgIyBhZGQgYSBuZXcgY29sdW1uIHdpdGgganVzdCBzdWJqZWN0CiAgZHBseXI6OnJlbmFtZSgic3ViamVjdCIgPSBzYW1wbGUyKSAlPiUKICAjIHJlbW92ZSB0aGUgc3VmZml4IGZyb20gc3ViamVjdCBuYW1lcwogIG11dGF0ZV9hdCgic3ViamVjdCIsIHN0cl9zdWIsIHN0YXJ0PTIsIGVuZD01KQogIApgYGAKCiMjIENvbWJpbmUgZGZzCgpgYGB7ciwgZWNobz1GQUxTRX0KbWV0YWRhdGEkc3ViamVjdCA8LSBhcy5jaGFyYWN0ZXIobWV0YWRhdGEkc3ViamVjdCkKCiMgY29tYmluZSBtZXRhIGFuZCBvbWljcyBkZnMKbWV0YV9vbWljcyA8LSBmdWxsX2pvaW4ob21pY3NkYXRhX3RpZHksCiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gInN1YmplY3QiKQoKIyBzZXBhcmF0ZSBteiBhbmQgcnQKbWV0YV9vbWljc19zZXAgPC0gbWV0YV9vbWljcyAlPiUKICBzZXBhcmF0ZShjb2wgPSBtel9ydCwKICAgICAgICAgICBpbnRvID0gYygibXoiLCAicnQiKSwKICAgICAgICAgICBzZXAgPSAiXyIpIAoKIyBjb252ZXJ0IGNvbHVtbnMgdG8gY29ycmVjdCB0eXBlCm1ldGFfb21pY3Nfc2VwJG16IDwtIGFzLm51bWVyaWMobWV0YV9vbWljc19zZXAkbXopCm1ldGFfb21pY3Nfc2VwJHJ0IDwtIGFzLm51bWVyaWMobWV0YV9vbWljc19zZXAkcnQpCm1ldGFfb21pY3Nfc2VwJHN1YmplY3QgPC0gYXMuY2hhcmFjdGVyKG1ldGFfb21pY3Nfc2VwJHN1YmplY3QpCgojIHJlYXJyYW5nZSBjb2x1bW4gb3JkZXIKbWV0YV9vbWljc19zZXAgPC0gbWV0YV9vbWljc19zZXAgJT4lCiAgZHBseXI6OnNlbGVjdChzdWJqZWN0LCBzYW1wbGUsIHRyZWF0bWVudCwgdG9tYXRvX29yX2NvbnRyb2wsIGV2ZXJ5dGhpbmcoKSkKCnN0cihtZXRhX29taWNzX3NlcCkKYGBgCgpgYGB7cn0KIyByZXBsYWNlIE5BJ3MgaW4gY2VydGFpbiBjb2x1bW5zIHdpdGggUUMKbWV0YV9vbWljc19zZXAkc3ViamVjdCA8LSBzdHJfcmVwbGFjZV9hbGwobWV0YV9vbWljc19zZXAkc3ViamVjdCwgImMiLCAicWMiKQogIAoKbWV0YV9vbWljc19zZXAkc2FtcGxlIDwtIG1ldGFfb21pY3Nfc2VwJHNhbXBsZSAlPiUKICByZXBsYWNlX25hKCJRQyIpCgptZXRhX29taWNzX3NlcCR0cmVhdG1lbnQgPC0gbWV0YV9vbWljc19zZXAkdHJlYXRtZW50ICU+JQogIHJlcGxhY2VfbmEoIlFDIikKCm1ldGFfb21pY3Nfc2VwJHRvbWF0b19vcl9jb250cm9sIDwtIG1ldGFfb21pY3Nfc2VwJHRvbWF0b19vcl9jb250cm9sICU+JQogIHJlcGxhY2VfbmEoIlFDIikKYGBgCgojIERhdGEgc3VtbWFyaWVzCgojIyBOdW1iZXIgb2YgbWFzc2VzIGRldGVjdGVkCgpgYGB7cn0KbnJvdyhvbWljc2RhdGEpCmBgYAoKIyMgTWFzcyByYW5nZSBmb3IgbWV0YWJvbGl0ZXMgZGV0ZWN0ZWQ/CgpgYGB7cn0KcmFuZ2UobWV0YV9vbWljc19zZXAkbXopCmBgYAoKIyMgUlQgcmFuZ2UgZm9yIG1ldGFib2xpdGVzIGRldGVjdGVkPwoKYGBge3J9CnJhbmdlKG1ldGFfb21pY3Nfc2VwJHJ0KQpgYGAKCiMjIE1hc3MgdnMgUlQgc2NhdHRlcnBsb3QKCmBgYHtyfQojIHBsb3QKKHBsb3RfbXp2c3J0IDwtIG1ldGFfb21pY3Nfc2VwICU+JQogIGdncGxvdChhZXMoeCA9IHJ0LCB5ID0gbXopKSArCiAgZ2VvbV9wb2ludCgpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9ICJSZXRlbnRpb24gdGltZSwgbWluIiwKICAgICAgIHkgPSAibS96IiwKICAgICAgIHRpdGxlID0gIm16IGFjcm9zcyBSVCBmb3IgYWxsIGZlYXR1cmVzIikpCmBgYAoKIyMgSGlzdG9ncmFtIGZvciBtYXNzIHJhbmdlCgpgYGB7cn0KbWV0YV9vbWljc19zZXAgJT4lCiAgZ3JvdXBfYnkobXopICU+JQogIGdncGxvdChhZXMoeCA9IG16KSkgKwogIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gMjUpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9ICJNb25vaXNvdG9waWMgbWFzcyAoYW11KSIsCiAgICAgICB5ID0gIk51bWJlciBvZiBmZWF0dXJlcyIsCiAgICAgICB0aXRsZSA9ICJEaXN0cmlidXRpb24gb2YgZmVhdHVyZXMgYnkgbWFzcyIpCmBgYAoKIyMgSGlzdG9ncmFtIGZvciBSVAoKYGBge3J9Cm1ldGFfb21pY3Nfc2VwICU+JQogIGdyb3VwX2J5KG16KSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBydCkpICsKICBnZW9tX2hpc3RvZ3JhbShiaW53aWR0aCA9IDAuMSkgKyAjIDYgc2Vjb25kIGJpbnMKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9ICJSZXRlbnRpb24gdGltZSIsCiAgICAgICB5ID0gIk51bWJlciBvZiBmZWF0dXJlcyIsCiAgICAgICB0aXRsZSA9ICJEaXN0cmlidXRpb24gb2YgZmVhdHVyZXMgYnkgcmV0ZW50aW9uIHRpbWUiKQpgYGAKCiMgTkFzIGFuZCBpbXB1dGluZwoKIyMgTkFzCgpgYGB7cn0KIyBzYW1wbGVzIG9ubHkgKG5vIFFDcykKb21pY3NkYXRhX25vUUMgPC0gb21pY3NkYXRhICU+JQogIGRwbHlyOjpzZWxlY3QoLWNvbnRhaW5zKCJxYyIpKQoKI05BcyBpbiBzYW1wbGVzIG9ubHk/Ck5BYnlSb3dfbm9RQyA8LSByb3dTdW1zKGlzLm5hKG9taWNzZGF0YV9ub1FDWywtMV0pKQoKaGlzdChOQWJ5Um93X25vUUMsCiAgICAgYnJlYWtzID0gNzAsICMgYmVjYXVzZSB0aGVyZSBhcmUgNzAgc2FtcGxlcyAKICAgICB4bGFiID0gIk51bWJlciBvZiBtaXNzaW5nIHZhbHVlcyIsCiAgICAgeWxhYiA9ICJOdW1iZXIgb2YgbWV0YWJvbGl0ZXMiLAogICAgIG1haW4gPSAiSG93IG1hbnkgbWlzc2luZyB2YWx1ZXMgYXJlIHRoZXJlPyIpCmBgYAoKQXJlIHRoZXJlIGFueSBtaXNzaW5nIHZhbHVlcyBpbiBRQ3M/IFRoZXJlIHNob3VsZG4ndCBiZSBhZnRlciBkYXRhIHByZXByb2Nlc3NpbmcvZmlsdGVyaW5nCgpgYGB7cn0Kb21pY3NkYXRhX1FDIDwtIG9taWNzZGF0YSAlPiUKICBkcGx5cjo6c2VsZWN0KHN0YXJ0c193aXRoKCJxYyIpKSAKCk5BYnlSb3dfUUMgPC0gY29sU3Vtcyhpcy5uYShvbWljc2RhdGFfUUMpKQojIGxldHMgY29uZmlybSB0aGF0IHRoZXJlIGFyZSBubyBtaXNzaW5nIHZhbHVlcyBmcm9tIG15IFFDcwpzdW0oTkFieVJvd19RQykgIyBubwpgYGAKCmBgYHtyfQojIGNhbGN1bGF0ZSBob3cgbWFueSBOQXMgdGhlcmUgYXJlIHBlciBmZWF0dXJlIGluIHdob2xlIGRhdGEgc2V0CmNvbnRhaW5zX05BcyA8LSBtZXRhX29taWNzICU+JQogIGdyb3VwX2J5KG16X3J0KSAlPiUKICBkcGx5cjo6Y291bnQoaXMubmEocGVha19oZWlnaHQpKSAlPiUKICBmaWx0ZXIoYGlzLm5hKHBlYWtfaGVpZ2h0KWAgPT0gVFJVRSkKa2FibGUoY29udGFpbnNfTkFzKQpgYGAKCiMjIFJlbW92ZSBOQXMKClRoZXJlIGFyZSBzb21lIGZlYXR1cmVzIHRoYXQgYXJlIG1pc3NpbmcgaW4gYSBtYWpvcml0eSBvZiBzdWJqZWN0cy4gSSdtIGdvaW5nIHRvIHJlbW92ZSB0aG9zZSBiZWNhdXNlIHRoZXkgbWF5IHNrZXcgdGhlIGRhdGEuCgpgYGB7cn0KIyBudW1iZXIgb2YgZmVhdHVyZXMKbnJvdyhvbWljc2RhdGEpCgojIFJlbW92aW5nIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSBvdmVyIDkwJSBvZiBkYXRhCm9taXRfZmVhdHVyZXMgPC0gY29udGFpbnNfTkFzICU+JQogIGZpbHRlcihuLzcwID49IDAuOTApCgojcHJldmlldwpucm93KG9taXRfZmVhdHVyZXMpICMgZmVhdHVyZXMgdG8gcmVtb3ZlCgojIGhvdyBtYW55IGZlYXR1cmVzIHNob3VsZCBiZSBsZWZ0Pwpucm93KG9taWNzZGF0YSkgLSBucm93KG9taXRfZmVhdHVyZXMpCgojIG5vdyByZW1vdmUgdGhlc2UgZmVhdHVyZXMgZnJvbSB0aGUgb21pY3MgZGF0YXNldApvbWljc2RhdGEgPC0gb21pY3NkYXRhICU+JQogIGFudGlfam9pbihvbWl0X2ZlYXR1cmVzLAogICAgICAgICAgICBieSA9ICJtel9ydCIpCgogIyBjaGVjayBudW1iZXIgb2YgZmVhdHVyZXMgbm93Pwpucm93KG9taWNzZGF0YSkKYGBgCgojIyBEYXRhIGltcHV0YXRpb24KCmBgYHtyfQojIGltcHV0ZSBhbnkgbWlzc2luZyB2YWx1ZXMgYnkgcmVwbGFjaW5nIHRoZW0gd2l0aCAxLzIgb2YgdGhlIGxvd2VzdCBwZWFrIGhlaWdodCB2YWx1ZSBvZiBhIGZlYXR1cmUgKGkuZS4gaW4gYSByb3cpLgppbXB1dGVkX29taWNzZGF0YSA8LSBvbWljc2RhdGEKCmltcHV0ZWRfb21pY3NkYXRhW10gPC0gbGFwcGx5KGltcHV0ZWRfb21pY3NkYXRhLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oeCkgaWZlbHNlKGlzLm5hKHgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluKHgsIG5hLnJtID0gVFJVRSkvMiwgeCkpCgpkaW0oaW1wdXRlZF9vbWljc2RhdGEpCmBgYAoKQXJlIHRoZXJlIGFueSBOQXM/CgpgYGB7cn0KaW1wdXRlZF9vbWljc2RhdGEgJT4lCiAgaXMubmEoKSAlPiUKICBzdW0oKQoKIyBpbXB1dGF0aW9ucyB3b3JrZWQKYGBgCgojIE5ldyB0aWR5IGRmCgpgYGB7cn0KIyBjcmVhdGUgbG9uZyBkZiBmb3IgaW1wdXRlZCBvbWljcyBkZgppbXB1dGVkX29taWNzZGF0YV90aWR5IDwtIGltcHV0ZWRfb21pY3NkYXRhICU+JQogIHBpdm90X2xvbmdlcihjb2xzID0gMzpuY29sKC4pLAogICAgICAgICAgICAgICBuYW1lc190byA9ICJzYW1wbGUiLAogICAgICAgICAgICAgICB2YWx1ZXNfdG8gPSAicGVha19oZWlnaHQiKSAlPiUKICBtdXRhdGUoc2FtcGxlMiA9IHNhbXBsZSkgJT4lCiAgIyBhZGQgYSBuZXcgY29sdW1uIHdpdGgganVzdCBzdWJqZWN0CiAgZHBseXI6OnJlbmFtZSgic3ViamVjdCIgPSBzYW1wbGUyKSAlPiUKICAjIHJlbW92ZSB0aGUgc3VmZml4IGZyb20gc3ViamVjdCBuYW1lcwogIG11dGF0ZV9hdCgic3ViamVjdCIsIHN0cl9zdWIsIHN0YXJ0PTIsIGVuZD01KSAKCiMgY29tYmluZSBtZXRhIGFuZCBpbXB1dGVkIG9taWNzIGRmcwppbXBfbWV0YV9vbWljcyA8LSBmdWxsX2pvaW4oaW1wdXRlZF9vbWljc2RhdGFfdGlkeSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSBjKCJzdWJqZWN0IiA9ICJzdWJqZWN0IikpCmBgYAoKYGBge3J9CiMgc2VwYXJhdGUgbXogYW5kIHJ0CmltcF9tZXRhX29taWNzX3NlcCA8LSBpbXBfbWV0YV9vbWljcyAlPiUKICBzZXBhcmF0ZShjb2wgPSBtel9ydCwKICAgICAgICAgICBpbnRvID0gYygibXoiLCAicnQiKSwKICAgICAgICAgICBzZXAgPSAiXyIpIAoKIyBjb252ZXJ0IGNvbHVtbnMgdG8gY29ycmVjdCB0eXBlCmltcF9tZXRhX29taWNzX3NlcCRteiA8LSBhcy5udW1lcmljKGltcF9tZXRhX29taWNzX3NlcCRteikKaW1wX21ldGFfb21pY3Nfc2VwJHJ0IDwtIGFzLm51bWVyaWMoaW1wX21ldGFfb21pY3Nfc2VwJHJ0KQoKYGBgCgojIE5vdGFtZSBmZWF0dXJlIHJlZHVjdGlvbgoKdmlnbmV0dGUgZm9yIHJlZmVyZW5jZQoKYGBge3J9CiNicm93c2VWaWduZXR0ZXMoIm5vdGFtZSIpCmBgYAoKTGV0J3MgbG9vayBhdCB3aGF0IG1hc3NlcyBjb21lIHVwIGF0IGVhY2ggUlQgYWdhaW4KCmBgYHtyfQojIHJ0IHZzIG16IHBsb3QKaW1wX21ldGFfb21pY3Nfc2VwICU+JQogIGdncGxvdChhZXMoeCA9IHJ0LCB5ID0gbXopKSArCiAgZ2VvbV9wb2ludCgpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnMoeCA9ICJSVCAobWluKSIsCiAgICAgICB5ID0gIm16IikKYGBgCgpUaGVyZSBhcmUgc29tZSBwb2ludHMgdGhhdCBhcmUgYXQgdGhlIHNhbWUgUlQsIG1lYW5pbmcgdGhleSBjb3VsZCBiZSBjb21pbmcgZnJvbSB0aGUgc2FtZSBjb21wb3VuZC4gV2UnbGwgcnVuIG5vdGFtZSBjbHVzdGVyaW5nIHRvIGNvbGxhcHNlIGZlYXR1cmVzIGNvbWluZyBmcm9tIG9uZSBtYXNzIGludG8gb25lIGZlYXR1cmUuCgojIyBEYXRhIHJlc3RydWN0dXJpbmcgZm9yIG5vdGFtZQoKYGBge3J9CiMgY3JlYXRlIGZlYXR1cmVzIGxpc3QgZnJvbSBpbXB1dGVkIGRhdGEgc2V0IHRvIG9ubHkgaW5jbHVkZSB1bmlxdWUgZmVhdHVyZSBJRCdzIChtel9ydCksIG16IGFuZCBSVApmZWF0dXJlcyA8LSBpbXBfbWV0YV9vbWljc19zZXAgJT4lCiAgY2JpbmQoaW1wX21ldGFfb21pY3MkbXpfcnQpICU+JQogIGRwbHlyOjpyZW5hbWUoIm16X3J0IiA9ICJpbXBfbWV0YV9vbWljcyRtel9ydCIpICU+JQogIGRwbHlyOjpzZWxlY3QoYyhtel9ydCwgbXosIHJ0KSkgJT4lCiAgZGlzdGluY3QoKSAjIHJlbW92ZSB0aGUgZHVwbGljYXRlIHJvd3MKCiMgY3JlYXRlIGEgc2Vjb25kIGRhdGEgZnJhbWUgd2hpY2ggaXMganVzdCBpbXBfbWV0YV9vbWljcyByZXN0cnVjdHVyZWQgdG8gYW5vdGhlciB3aWRlIGZvcm1hdApkYXRhX25vdGFtZSA8LSBkYXRhLmZyYW1lKGltcHV0ZWRfb21pY3NkYXRhICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHBseXI6OnNlbGVjdCgtcm93X2lkKSAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQoKSkKCmRhdGFfbm90YW1lIDwtIGRhdGFfbm90YW1lICU+JQogIHRpYmJsZTo6cm93bmFtZXNfdG9fY29sdW1uKCkgJT4lICMgY2hhbmdlIHNhbXBsZXMgZnJvbSByb3duYW1lcyB0byBpdHMgb3duIGNvbHVtbgogIHJvd190b19uYW1lcyhyb3dfbnVtYmVyID0gMSkgIyBjaGFuZ2UgdGhlIGZlYXR1cmUgSURzIChtel9ydCkgZnJvbSBmaXJzdCByb3cgb2JzIGludG8gY29sdW1uIG5hbWVzCmBgYAoKQ2hlY2sgc3RydWN0dXJlcwoKYGBge3J9CiMgY2hlY2sgaWYgbXogYW5kIHJ0IGFyZSBudW1lcmljCnN0cihmZWF0dXJlcykKYGBgCgpgYGB7cn0KIyBjaGVjayBpZiByZXN1bHRzIGFyZSBudW1lcmljCmhlYWQoZGF0YV9ub3RhbWUsIG4gPSAxKQoKIyBjaGFuZ2UgdG8gcmVzdWx0cyB0byBudW1lcmljCmRhdGFfbm90YW1lIDwtIGRhdGFfbm90YW1lICU+JQogIG11dGF0ZV9hdCgtMSwgYXMubnVtZXJpYykKCmhlYWQoZGF0YV9ub3RhbWUsIG4gPSAxKQpgYGAKCiMjIEZpbmQgY29ubmVjdGlvbnMKCmBgYHtyfQpjb25uZWN0aW9uIDwtIGZpbmRfY29ubmVjdGlvbnMoZGF0YSA9IGRhdGFfbm90YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJfdGhyZXNoID0gMC45NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0X3dpbmRvdyA9IDEvNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX2NvbCA9ICJtel9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel9jb2wgPSAibXoiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRfY29sID0gInJ0IikKCmhlYWQoY29ubmVjdGlvbikKYGBgCgojIyBDbHVzdGVyaW5nCgpgYGB7cn0KY2x1c3RlcnMgPC0gZmluZF9jbHVzdGVycyhjb25uZWN0aW9ucyA9IGNvbm5lY3Rpb24sIGRfdGhyZXNoID0gMC44KQpgYGAKCmBgYHtyfQojIGFzc2lnbiBhIGNsdXN0ZXIgSUQgdG8gYWxsIGZlYXR1cmVzLiBDbHVzdGVycyBhcmUgbmFtZWQgYWZ0ZXIgZmVhdHVyZSB3aXRoIGhpZ2hlc3QgbWVkaWFuIHBlYWsgaGVpZ2h0CmZlYXR1cmVzX2NsdXN0ZXJlZCA8LSBhc3NpZ25fY2x1c3Rlcl9pZChkYXRhX25vdGFtZSwgY2x1c3RlcnMsIGZlYXR1cmVzLCBuYW1lX2NvbCA9ICJtel9ydCIpCgojIGxldHMgc2VlIGhvdyBtYW55IGZlYXR1cmVzIGFyZSByZW1vdmVkIHdoZW4gd2Ugb25seSBrZWVwIG9uZSBmZWF0dXJlIHBlciBjbHVzdGVyCnB1bGxlZCA8LSBwdWxsX2NsdXN0ZXJzKGRhdGFfbm90YW1lLCBmZWF0dXJlc19jbHVzdGVyZWQsIG5hbWVfY29sID0gIm16X3J0IikKY2x1c3Rlcl9kYXRhIDwtIHB1bGxlZCRjZGF0YQpjbHVzdGVyX2ZlYXR1cmVzIDwtIHB1bGxlZCRjZmVhdHVyZXMKCiMgaG93IG11Y2ggZGlkIHdlIHRyaW0gb3VyIGRhdGEgZG93biBieT8KbnJvdyhvbWljc2RhdGEpIC0gbnJvdyhjbHVzdGVyX2ZlYXR1cmVzKQoKYGBgCgpgYGB7cn0KIyBleHBvcnQgY2x1c3RlcmVkIGZlYXR1cmUgbGlzdAp3cml0ZV9jc3YoY2x1c3Rlcl9mZWF0dXJlcywKICAgICAgICAgICJOb3RhbWUvbm90YW1lLWNsdXN0ZXJlZC1mZWF0dXJlcy5jc3YiKQoKYGBgCgojIyBSZWR1Y2UgZGF0YXNldCBiYXNlZCBvbiBjbHVzdGVyaW5nCgpgYGB7cn0KIyB0cmFuc3Bvc2UgdGhlIGZ1bGwgZGF0YXNldCBiYWNrIHRvIHdpZGUgc28gdGhhdCBpdCBpcyBtb3JlIHNpbWlsYXIgdG8gdGhlIG5vdGFtZSBkYXRhc2V0CmltcF9tZXRhX29taWNzX3dpZGUgPC0gaW1wX21ldGFfb21pY3MgJT4lCiAgZHBseXI6OnNlbGVjdCgtInJvd19pZCIpICU+JQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBtel9ydCwKICAgICAgICAgICAgICB2YWx1ZXNfZnJvbSA9IHBlYWtfaGVpZ2h0KQoKIyBsaXN0IG9mIHJlZHVjZWQgZmVhdHVyZXMKY2x1c3Rlcm5hbWVzIDwtIGNsdXN0ZXJfZmVhdHVyZXMkbXpfcnQKCiMgc2VsZWN0IG9ubHkgdGhlIGZlYXR1cmVzIGFyZSBpbiB0aGUgcmVkdWNlZCBsaXN0CmltcF9jbHVzdCA8LSBpbXBfbWV0YV9vbWljc193aWRlWyxjKG5hbWVzKGltcF9tZXRhX29taWNzX3dpZGUpICVpbiUgY2x1c3Rlcm5hbWVzKV0KCiMgYmluZCBiYWNrIHNhbXBsZSBuYW1lcwppbXBfY2x1c3QgPC0gY2JpbmQoaW1wX21ldGFfb21pY3Nfd2lkZVsxXSwgaW1wX2NsdXN0KQoKdGliYmxlKGltcF9jbHVzdCkKCmBgYAoKIyMgTmV3IG16IHZzIHJ0IHBsb3QKCkxldCdzIHNlZSBob3cgb3VyIGNsdXN0ZXJlZCBkYXRhIGxvb2tzIG5vdyBjb21wYXJlZCB0byB0aGUgb3JpZ2luYWwKCmBgYHtyfQojIHBsb3QgbmV3IHJ0IHZzIG16IHNjYXR0ZXJwbG90IHBvc3QtY2x1c3RlcmluZwoocGxvdF9tenZzcnRfcG9zdGNsdXN0ZXIgPC0gY2x1c3Rlcl9mZWF0dXJlcyAlPiUKICBnZ3Bsb3QoYWVzKHggPSBydCwKICAgICAgICAgICAgIHkgPSBteikpICsKICBnZW9tX3BvaW50KCkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh4ID0gIlJldGVudGlvbiB0aW1lLCBtaW4iLAogICAgICAgeSA9ICJtL3osIG5ldXRyYWwiLAogICAgICAgdGl0bGUgPSAibXogYWNyb3NzIFJUIGZvciBhbGwgZmVhdHVyZXMgYWZ0ZXIgY2x1c3RlcmluZyIpKQoKCmBgYAoKYGBge3IsIGZpZy5oZWlnaHQ9MTAsIGZpZy5hc3A9MX0KIyBwbG90IGJvdGggc2NhdHRlcnBsb3RzIHRvIGNvbXBhcmUgd2l0aCBhbmQgd2l0aG91dCBub3RhbWUgY2x1c3RlcmluZwooc2NhdHRlcnBsb3RzIDwtIGdnYXJyYW5nZShwbG90X216dnNydCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsb3RfbXp2c3J0X3Bvc3RjbHVzdGVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJvdyA9IDIpKQpgYGAKCiMgV3JhbmdsZSBuZXcgZGF0YQoKYGBge3J9CiMgYWRkIHN1YmplY3QgY29sdW1uIGJhY2sgZm9yIGEgc2VhbWxlc3Mgam9pbiB3aXRoIG1ldGFkYXRhCmltcF9jbHVzdCRzdWJqZWN0IDwtIGltcF9tZXRhX29taWNzX3dpZGUkc3ViamVjdAoKIyBiaW5kIGJhY2sgbmV3IGNsdXN0ZXJlZCBkYXRhIHdpdGggbWV0YWRhdGEKaW1wX21ldGFiaW5kX2NsdXN0IDwtIHJpZ2h0X2pvaW4obWV0YWRhdGEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBfY2x1c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gInN1YmplY3QiKQpgYGAKCiMgVmlzdWFsaXplIHVudHJhbnNmb3JtZWQgZGF0YQoKIyMgTW9yZSB3cmFuZ2xpbmcKCmBgYHtyfQojIG1ldGEgZGF0YSBjb2x1bW5zIApzdHJfbWV0YSA8LSBjb2xuYW1lcyhpbXBfbWV0YWJpbmRfY2x1c3RbLDQ6MTNdKQoKIyBjaGFuZ2UgbWV0YSBkYXRhIGNvbHVtbnMgdG8gY2hhcmFjdGVyIHNvIHRoYXQgSSBjYW4gY2hhbmdlIE5BcyBmcm9tIFFDcyB0byAiUUMiCmltcF9tZXRhYmluZF9jbHVzdCA8LSBpbXBfbWV0YWJpbmRfY2x1c3QgJT4lCiAgbXV0YXRlX2F0KHN0cl9tZXRhLCBhcy5jaGFyYWN0ZXIpIAoKIyByZXBsYWNlIE5BcyBpbiBtZXRhZGF0YSBjb2x1bW5zIGZvciBRQ3MKaW1wX21ldGFiaW5kX2NsdXN0W2lzLm5hKGltcF9tZXRhYmluZF9jbHVzdCldIDwtICJRQyIKCiMgbG9uZyBkZgppbXBfbWV0YWJpbmRfY2x1c3RfdGlkeSA8LSBpbXBfbWV0YWJpbmRfY2x1c3QgJT4lCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSAxNTpuY29sKC4pLAogICAgICAgICAgICAgICBuYW1lc190byA9ICJtel9ydCIsCiAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJyZWxfYWJ1bmQiKQoKIyBzdHJ1Y3R1cmUgY2hlY2sKaGVhZChpbXBfbWV0YWJpbmRfY2x1c3RfdGlkeSkKYGBgCgojIyBCb3hwbG90CgpgYGB7cn0KaW1wX21ldGFiaW5kX2NsdXN0X3RpZHkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc3ViamVjdCwgeSA9IHJlbF9hYnVuZCwgY29sb3IgPSB0cmVhdG1lbnQpKSArCiAgZ2VvbV9ib3hwbG90KGFscGhhID0gMC42KSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoIm9yYW5nZSIsICJsaWdodGdyZWVuIiwgImdyYXkiLCAidG9tYXRvMSIpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwKSkgKwogIGxhYnModGl0bGUgPSAiTEMtTVMgKCspIEZlYXR1cmUgQWJ1bmRhbmNlcyBieSBTYW1wbGUiLAogICAgICAgc3VidGl0bGUgPSAiVW5zY2FsZWQgZGF0YSIsCiAgICAgICB5ID0gIlJlbGF0aXZlIGFidW5kYW5jZSIpCmBgYAoKV2lsbCBuZWVkIHRvIGxvZyB0cmFuc2Zvcm0gaW4gb3JkZXIgdG8gbm9ybWFsaXplIGFuZCBhY3R1YWxseSBzZWUgdGhlIGRhdGEKCiMgTG9nMiB0cmFuc2Zvcm0KCmBgYHtyfQppbXBfbWV0YWJpbmRfY2x1c3RfdGlkeV9sb2cyIDwtIGltcF9tZXRhYmluZF9jbHVzdF90aWR5ICU+JQogIG11dGF0ZShyZWxfYWJ1bmRfbG9nMiA9IGxvZzIocmVsX2FidW5kKSkKYGBgCgojIyBCb3hwbG90CgpgYGB7ciwgZmlnLndpZHRoPTEwfQooYnBfZGF0YV9xdWFsaXR5IDwtIGltcF9tZXRhYmluZF9jbHVzdF90aWR5X2xvZzIgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2FtcGxlLCB5ID0gcmVsX2FidW5kX2xvZzIsIGNvbG9yID0gdHJlYXRtZW50KSkgKwogIGdlb21fYm94cGxvdChhbHBoYSA9IDAuNikgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJvcmFuZ2UiLCAibGlnaHRncmVlbiIsICJncmF5IiwgInRvbWF0bzEiKSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCkpICsKICBsYWJzKHRpdGxlID0gIkxDLU1TICgrKSBGZWF0dXJlIEFidW5kYW5jZXMgYnkgU2FtcGxlIiwKICAgICAgIHN1YnRpdGxlID0gIkxvZzIgdHJhbnNmb3JtZWQgZGF0YSIsCiAgICAgICB5ID0gIlJlbGF0aXZlIGFidW5kYW5jZSIpKQpgYGAKCiMgTm90YW1lIGRyaWZ0IGNvcnJlY3Rpb24KCiMjIERhdGEgd3JhbmdsaW5nCgojIyMgRmVhdHVyZSBhYnVuZCBkZgoKYGBge3J9CiMgZmlsdGVyZWQgYW5kIGltcHV0ZWQgZGF0YSBhZnRlciBub3RhbWUgY2x1c3RlcmluZywgdHJhbnNwb3NlZApmZWF0dXJlc19mb3JRQ2NvcnIgPC0gaW1wX2NsdXN0ICU+JQogIGRwbHlyOjpzZWxlY3QoIXN1YmplY3QpICU+JQogIHQoKSAlPiUKICBhcy5kYXRhLmZyYW1lKCkgJT4lCiAgcm93X3RvX25hbWVzKHJvd19udW1iZXIgPSAiZmluZF9oZWFkZXIiKQoKIyBsb2cyIHRyYW5zZm9ybQpsb2cyX2ZlYXR1cmVzX2ZvclFDY29yciA8LSBmZWF0dXJlc19mb3JRQ2NvcnIgJT4lCiAgbXV0YXRlX2FsbChhcy5udW1lcmljKSAlPiUKICBsb2cyKCkKCiMgd3JpdGUgY3N2IHRvIG1hbnVhbGx5IGVkaXQKd3JpdGUuY3N2KGxvZzJfZmVhdHVyZXNfZm9yUUNjb3JyLAogICAgICAgICAgIk5vdGFtZS9mZWF1cmVzX2Zyb21SX2ZvckRDXzEuY3N2IiwKICAgICAgICAgIHJvdy5uYW1lcyA9IFRSVUUpCmBgYAoKSW1wb3J0IGNvcnJlY3RlZCBkZiAoZWRpdGVkIHNvIHRoYXQgIm16X3J0IiBjb3VsZCBiZSB0aGUgcm93IG5hbWUgZm9yIHJvdyAxKQoKYGBge3J9Cgpsb2cyX2ZlYXR1cmVzX2ZvclFDY29ycl9uZXcgPC0gcmVhZC5jc3YoIk5vdGFtZS9mZWF1cmVzX2ZvclJfZm9yRENfZWRpdGVkbXpydF8yLmNzdiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Lm5hbWVzID0gMSkKCgpsb2cyX2ZlYXR1cmVzX2ZvclFDY29ycl9uZXcgPC0gbG9nMl9mZWF0dXJlc19mb3JRQ2NvcnJfbmV3ICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAibXpfcnQiKSAlPiUKICByb3dfdG9fbmFtZXMocm93X251bWJlciA9IDEpICU+JQogIHNlcGFyYXRlKGNvbCA9IG16X3J0LAogICAgICAgICAgIGludG8gPSBjKCJteiIsICJydCIpLAogICAgICAgICAgIHNlcCA9ICJfIikKCndyaXRlLmNzdihsb2cyX2ZlYXR1cmVzX2ZvclFDY29ycl9uZXcsCiAgICAgICAgICAiTm90YW1lL2ZlYXR1cmVzX2Zyb21SX2ZvckRDXzMuY3N2IiwKICAgICAgICAgIHJvdy5uYW1lcyA9IFRSVUUpCgpgYGAKCiMjIyBQaGVubyBkZgoKYGBge3J9CiMgc2VwYXJhdGUgc2FtcGxlSUQgYW5kIGluamVjdGlvbiBvcmRlcgpwaGVub19kYXRhIDwtIGltcF9jbHVzdFsxXSAlPiUKICBzZXBhcmF0ZShjb2wgPSBzYW1wbGUsCiAgICAgICAgICAgaW50byA9IGMoInNhbXBsZSIsICJpbmplY3Rpb25fb3JkZXIiKSwKICAgICAgICAgICAjIGxhc3QgdW5kZXJzY29yZQogICAgICAgICAgIHNlcCA9ICJfKD8hLipfKSIpCgoKCiMgbWFrZSBpbmogb3JkZXIgY29sdW1uIG51bWVyaWMKcGhlbm9fZGF0YSA8LSBwaGVub19kYXRhICU+JQogIG11dGF0ZV9hdCgiaW5qZWN0aW9uX29yZGVyIiwgYXMubnVtZXJpYykKCnRfcGhlbm9fZGF0YSA8LSBhcy5kYXRhLmZyYW1lKHQocGhlbm9fZGF0YSkpCgp3cml0ZS5jc3YodF9waGVub19kYXRhLAogICAgICAgICAgIk5vdGFtZS9waGVub19kZi5jc3YiLAogICAgICAgICAgcm93Lm5hbWVzID0gVFJVRSkKYGBgCgpDb21iaW5lIHBoZW5vIGFuZCBmZWF0dXJlIGRmcyBtYW51YWxseSBpbiBleGNlbCB0byBjcmVhdGUgbWV0YWJvc2V0IGRmLgoKeGYjIyBJbXBvcnQgTWV0YWJvc2V0CgpgYGB7cn0KCiNtYWtlIHN1cmUgd2hlbiBjb252ZXJ0aW5nIGNzdiB0byB4bHN4IHRoYXQgeW91IHNhdmUgYXMgYSBuZXcgZmlsZSwgZG9uJ3QganVzdCBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGZpbGUKbWV0YWJvc2V0IDwtIHJlYWRfZnJvbV9leGNlbCgiTm90YW1lL21ldGFib3NldC54bHN4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdF9ieSA9IGMoImNvbHVtbiIsICJJb24gbW9kZSIpKQoKYGBgCgpgYGB7cn0KI2NvbnN0cnVjdCBNZXRhYm9zZXQKbW9kZXMgPC0gY29uc3RydWN0X21ldGFib3NldHMoZXhwcnMgPSBtZXRhYm9zZXQkZXhwcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoZW5vX2RhdGEgPSBtZXRhYm9zZXQkcGhlbm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9kYXRhID0gbWV0YWJvc2V0JGZlYXR1cmVfZGF0YSwgZ3JvdXBfY29sID0gIkNsYXNzIikKCiNleHRyYWN0IGVhY2ggbW9kZSBpbnRvIGEgc2luZ2xlIG9iamVjdAptb2RlIDwtIG1vZGVzJEMxOF9wb3MKYGBgCgojIyBCb3hwbG90cyBiZWZvcmUgY29ycmVjdGlvbgoKYGBge3IsIGZpZy53aWR0aD0xMH0KIyBvcmRlcmVkIGJ5IGluamVjdGlvbgoocXVhbGl0eUJQc19iNGNvcnJlY3Rpb24gPC0gcGxvdF9zYW1wbGVfYm94cGxvdHMobW9kZSwgb3JkZXJfYnkgPSBjKCJDbGFzcyIsICJJbmplY3Rpb25fb3JkZXIiKSwgdGl0bGUgPSAiVW5jb3JyZWN0ZWQgZmVhdHVyZSBhYnVuZGFuY2UiKSkKCiNvcmRlcmVkIGJ5IGNsYXNzCnBsb3Rfc2FtcGxlX2JveHBsb3RzKG1vZGUsIG9yZGVyX2J5ID0gIkluamVjdGlvbl9vcmRlciIsIHRpdGxlID0gIlVuY29ycmVjdGVkIGZlYXR1cmUgYWJ1bmRhbmNlIikKYGBgCgojIyBCb3hwbG90cyBhZnRlciBRQyBkcmlmdCBjb3JyZWN0aW9uCgpkcmlmdCBjb3JyZWN0aW9uIHRha2VzIHVwIHRvIDIgbWludXRlcwoKYGBge3J9Cm1vZGUgPC0gZmxhZ19kZXRlY3Rpb24obW9kZSwgcWNfbGltaXQgPSAwLjc1LCBncm91cF9saW1pdCA9IDAuOCkKCgpjb3JyZWN0ZWQgPC0gY29ycmVjdF9kcmlmdChtb2RlLCBsb2dfdHJhbnNmb3JtID0gRkFMU0UpCmBgYAoKIyMjIERpZCBkcmlmdCBjb3JyZWN0aW9uIHdvcms/CgpvdXRwdXQgaXMgcGVyY2VudCBvZiB0aGUgZmVhdHVyZXMgdGhhdCB3ZXJlIGRyaWZ0IGNvcnJlY3RlZC4gVGhlIHJlbWFpbmluZyAibG93LXF1YWxpdHkiIHBlcmNlbnQgcmVwcmVzZW50cyBmZWF0dXJlcyBmb3Igd2hpY2ggdGhlIERDIGRpZCAqbm90KiBpbXByb3ZlIHRoZSBSU0QgYW5kIEQtcmF0aW8gb2YgdGhlIG9yaWdpbmFsIGRhdGEuCgpgYGB7cn0KaW5zcGVjdGVkIDwtIGluc3BlY3RfZGMob3JpZyA9IG1vZGUsIGRjID0gY29ycmVjdGVkLCBjaGVja19xdWFsaXR5ID0gVFJVRSkKYGBgCgojIyMgQm94cGxvdHMsIGNvcnJlY3RlZAoKYGBge3IsIGZpZy53aWR0aD0xMH0KCihxdWFsaXR5QlBTX2RyaWZ0Y29ycmVjdGlvbiA8LSBwbG90X3NhbXBsZV9ib3hwbG90cyhjb3JyZWN0ZWQsIG9yZGVyX2J5ID0gYygiQ2xhc3MiLCAiSW5qZWN0aW9uX29yZGVyIiksIHRpdGxlID0gIkNvcnJlY3RlZCBmZWF0dXJlIGFidW5kYW5jZSIpKQoKcGxvdF9zYW1wbGVfYm94cGxvdHMoY29ycmVjdGVkLCBvcmRlcl9ieSA9ICJJbmplY3Rpb25fb3JkZXIiLCB0aXRsZSA9ICJDb3JyZWN0ZWQgZmVhdHVyZSBhYnVuZGFuY2UiKQpgYGAKCiMjIENvbXBhcmUgcXVhbGl0eSBCUHMKCmBgYHtyLCBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9OH0KKHF1YWxpdHlCUHNfY29tcGFyZWQgPC0gZ2dhcnJhbmdlKHF1YWxpdHlCUHNfYjRjb3JyZWN0aW9uLCBxdWFsaXR5QlBTX2RyaWZ0Y29ycmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICBuY29sID0gMSwgbnJvdyA9IDIpKQoKCmBgYAoKIyMgRXhwb3J0IG5ldyBNZXRhYm9zZXQgdG8gRXhjZWwgc3ByZWFkc2hlZXQKCmBgYHtyIGV2YWwgPSBGQUxTRX0Kd3JpdGVfdG9fZXhjZWwoY29ycmVjdGVkLCAiTm90YW1lL21ldGFib3NldF9jb3JyZWN0ZWQueGxzeCIpCmBgYAoKTWFudWFsbHkgZWRpdCB0aGUgZGYgc28gaXQgb25seSBoYXMgbWFzcywgcnQsIGFuZCBzYW1wbGUgY29sdW1ucwoKIyMgSW1wb3J0IGVkaXRlZCBNZXRhYm9zZXQKCmBgYHtyfQptZXRhYmRhdGFfY29ycmVjdGVkIDwtIHJlYWQuY3N2KGZpbGUgPSAiTm90YW1lL21ldGFib3NldF9jb3JyZWN0ZWRfZWRpdGVkZm9yUi5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrLm5hbWVzID0gRkFMU0UpCmBgYAoKIyMgV3JhbmdsZSBuZXcgbWV0YWIgZGF0YQoKIyMjIENvbWJpbmUgbXogJiBydCBiYWNrIHRvZ2V0aGVyCgpgYGB7cn0KbWV0YWJkYXRhX2NvcnJlY3RlZF9NWl9SVCA8LSBtZXRhYmRhdGFfY29ycmVjdGVkICU+JQogIG11dGF0ZShtYXNzID0gcm91bmQobWV0YWJkYXRhX2NvcnJlY3RlZCRtYXNzLCBkaWdpdHMgPSA0KSwgIyBEZWNyZWFzZSBudW1iZXIgb2YgZGVjaW1hbHMgZm9yIG0veiAmIHJ0CiAgICAgICAgIHJ0ID0gcm91bmQobWV0YWJkYXRhX2NvcnJlY3RlZCRydCwgZGlnaXRzID0gMyksCiAgICAgICAgIC5iZWZvcmU9MSwKICAgICAgICAgLmtlZXA9InVudXNlZCIpICU+JQogIHVuaXRlKG16X3J0LCBjKG1hc3MsIHJ0KSwgcmVtb3ZlPVRSVUUpICMgQ29tYmluZSBtL3ogJiBydCB3aXRoIF8gaW4gYmV0d2VlbgoKYGBgCgojIyMgVHJhbnNwb3NlIG5ldyBkZgoKYGBge3J9Cm1ldGFiZGF0YV9jb3JyZWN0ZWRfdCA8LSBhcy5kYXRhLmZyYW1lKHQobWV0YWJkYXRhX2NvcnJlY3RlZF9NWl9SVCkpICU+JQogIHJvd190b19uYW1lcyhyb3dfbnVtYmVyID0gImZpbmRfaGVhZGVyIikgJT4lICMgbWFrZSBNWl9SVCBjb2x1bW4gbmFtZXMKICByb3duYW1lc190b19jb2x1bW4odmFyID0gInNhbXBsZSIpICMgY2hhbmdlIHJvd25hbWVzIHRvIGNvbHVtbiAxCiAgCmBgYAoKIyMjIEJpbmQgbmV3IGRhdGEgd2l0aCBtZXRhZGF0YQoKSSB3YW50IHRoZSBuZXcgIm1ldGFiZGF0YV9jb3JyZWN0ZWRfdCIgZGYgdG8gbG9vayBqdXN0IGxpa2UgImltcF9tZXRhYmluZF9jbHVzdF9sb2cyIiBkZgoKYGBge3J9CiMgZ28gYmFjayB0byB3aWRlIGRhdGEKaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIgPC0gaW1wX21ldGFiaW5kX2NsdXN0X3RpZHlfbG9nMiAlPiUKICBkcGx5cjo6c2VsZWN0KCFyZWxfYWJ1bmQpICU+JQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBtel9ydCwKICAgICAgICAgICAgICB2YWx1ZXNfZnJvbSA9IHJlbF9hYnVuZF9sb2cyKQpgYGAKCmBgYHtyfQoKIyBiaW5kIG1ldGFkYXRhIGNvbHVtbnMgdG8gdGhlIG5ldyBkcmlmdCBjb3JyZWN0ZWQgZGYKRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIgPC0gZnVsbF9qb2luKGltcF9tZXRhYmluZF9jbHVzdF9sb2cyWyxjKDE6MTQpXSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhYmRhdGFfY29ycmVjdGVkX3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAic2FtcGxlIikKCiMgZml4IFFDIHN1YmplY3QgbmFtZXMKRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIkc3ViamVjdCA8LSBzdHJfcmVwbGFjZV9hbGwoRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIkc3ViamVjdCwgImMiLCAicWMiKQoKRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIgPC0gRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIgJT4lCiAgbXV0YXRlX2F0KCJzdWJqZWN0Iiwgc3RyX3N1Yiwgc3RhcnQ9MSwgZW5kPTQpCgoKIyBtYWtlIGZlYXR1cmUgYWJ1bmRhbmNlcyBudW1lcmljCkRDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyIDwtIERDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyICU+JQogIG11dGF0ZV9hdCgxNTpuY29sKC4pLCBhcy5udW1lcmljKQogIApgYGAKCgojIFBDQXMKCiMjIFdpdGggUUNTCgojIyMgV3JhbmdsZQoKYGBge3J9CgpQQ0EuRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIgPC0gUENBKERDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyLCAgIyB3aWRlIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsaS5zdXAgPSAxOjE0LCAjIHJlbW92ZSBxdWFsaXRhdGl2ZSB2YXJpYWJsZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaCA9IEZBTFNFLCAjIGRvbid0IGdyYXBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUudW5pdCA9IEZBTFNFKSAjIGRvbid0IHNjYWxlLCBhbHJlYWR5IHRyYW5zZm9ybWVkIGRhdGEKCiMgUENBIHN1bW1hcnkKa2FibGUoc3VtbWFyeShQQ0EuRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzIpKQpgYGAKCmBgYHtyfQojIHB1bGwgUEMgY29vcmRpbmF0ZXMgaW50byBkZgpQQ19jb29yZF9RQ19sb2cyIDwtIGFzLmRhdGEuZnJhbWUoUENBLkRDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyJGluZCRjb29yZCkKCiMgYmluZCBiYWNrIG1ldGFkYXRhIGZyb20gY29scyAxLTE0ClBDX2Nvb3JkX1FDX2xvZzIgPC0gYmluZF9jb2xzKERDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyWywxOjE0XSwgUENfY29vcmRfUUNfbG9nMikKCiMgZ3JhYiBzb21lIHZhcmlhbmNlIGV4cGxhaW5lZAppbXBvcnRhbmNlX1FDIDwtIFBDQS5EQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMiRlaWcKCiMgc2V0IHZhcmlhbmNlIGV4cGxhaW5lZCB3aXRoIFBDMSwgcm91bmQgdG8gMiBkaWdpdHMKUEMxX3dpdGhRQyA8LSByb3VuZChpbXBvcnRhbmNlX1FDWzEsMl0sIDIpCgojIHNldCB2YXJpYW5jZSBleHBsYWluZWQgd2l0aCBQQzIsIHJvdW5kIHRvIDIgZGlnaXRzClBDMl93aXRoUUMgPC0gcm91bmQoaW1wb3J0YW5jZV9RQ1syLDJdLCAyKQpgYGAKCiMjIyBQbG90cwoKVXNpbmcgRmFjdG9FeHRyYSBwYWNrYWdlCgpgYGB7cn0KIyBzY3JlZSBwbG90CmZ2aXpfZWlnKFBDQS5EQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMikKCiMgZ2V0IGVpZ2VudmFsdWVzCmthYmxlKGdldF9laWcoUENBLkRDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyKSkKYGBgCgpgYGB7cn0KIyBzY29yZXMgcGxvdApmdml6X3BjYV9pbmQoUENBLkRDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyKQpgYGAKCiMjIyBNYW51YWwgc2NvcmVzIHBsb3QKCmBgYHtyfQojIG1hbnVhbCBzY29yZXMgcGxvdAooUENBX3dpdGhRQ3MgPC0gUENfY29vcmRfUUNfbG9nMiAlPiUKICBnZ3Bsb3QoYWVzKHggPSBEaW0uMSwgeSA9IERpbS4yLAogICAgICAgICAgICAgZmlsbCA9IGZhY3Rvcih0cmVhdG1lbnQsIGxldmVscyA9IGMoImNvbnRyb2wiLCAiYmV0YSIsICJyZWQiLCAiUUMiKSksCiAgICAgICAgICAgICB0ZXh0ID0gc2FtcGxlKSkgKwogIGdlb21fcG9pbnQoc2hhcGUgPSAyMSwgYWxwaGEgPSAwLjgpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGdyZWVuIiwgIm9yYW5nZSIsICJ0b21hdG8iLCAibGlnaHRncmF5IikpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gImJsYWNrIikgKyAgCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZChQQzJfd2l0aFFDL1BDMV93aXRoUUMpICsKICBsYWJzKHggPSBnbHVlOjpnbHVlKCJQQzE6IHtQQzFfd2l0aFFDfSUiKSwKICAgICAgIHkgPSBnbHVlOjpnbHVlKCJQQzI6IHtQQzJfd2l0aFFDfSUiKSwKICAgICAgIGZpbGwgPSAiR3JvdXAiLAogICAgICAgdGl0bGUgPSAiUHJpbmNpcGFsIENvbXBvbmVudHMgQW5hbHlzaXMgU2NvcmVzIFBsb3QiLAogICAgICAgc3VidGl0bGUgPSAiTG9nMiB0cmFuc2Zvcm1lZCBkYXRhIikpCgpnZ3Bsb3RseShQQ0Ffd2l0aFFDcywgdG9vbHRpcCA9ICJ0ZXh0IikKYGBgCgojIyBXaXRob3V0IFFDcwoKIyMjIFdyYW5nbGUKCmBgYHtyfQpEQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMl9ub1FDcyA8LSBEQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMiAlPiUKICBmaWx0ZXIodHJlYXRtZW50ICE9ICJRQyIpCgpQQ0EuRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzJfbm9RQ3MgPC0gUENBKERDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyX25vUUNzLCAjIHdpZGUgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGkuc3VwPTE6MTQsICMgcmVtb3ZlIHF1YWxpdGF0aXZlIHZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGg9RkFMU0UsICMgZG9uJ3QgZ3JhcGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlLnVuaXQ9RkFMU0UpICMgZG9uJ3Qgc2NhbGUsIHdlIGFscmVhZHkgZGlkIHRoaXMKCiMgbG9vayBhdCBzdW1tYXJ5CmthYmxlKHN1bW1hcnkoUENBLkRDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyX25vUUNzKSkKYGBgCgpgYGB7cn0KIyBwdWxsIFBDIGNvb3JkaW5hdGVzIGludG8gZGYKUENfY29vcmRfbm9RQ3NfbG9nMiA8LSBhcy5kYXRhLmZyYW1lKFBDQS5EQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMl9ub1FDcyRpbmQkY29vcmQpCgojIGJpbmQgYmFjayBtZXRhZGF0YSBmcm9tIGNvbHMgMS0xNApQQ19jb29yZF9ub1FDc19sb2cyIDwtIGJpbmRfY29scyhEQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMl9ub1FDc1ssMToxNF0sIFBDX2Nvb3JkX25vUUNzX2xvZzIpCgojIGdyYWIgc29tZSB2YXJpYW5jZSBleHBsYWluZWQKaW1wb3J0YW5jZV9ub1FDIDwtIFBDQS5EQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMl9ub1FDcyRlaWcKCiMgc2V0IHZhcmlhbmNlIGV4cGxhaW5lZCB3aXRoIFBDMSwgcm91bmQgdG8gMiBkaWdpdHMKUEMxX25vUUMgPC0gcm91bmQoaW1wb3J0YW5jZV9ub1FDWzEsMl0sIDIpCgojIHNldCB2YXJpYW5jZSBleHBsYWluZWQgd2l0aCBQQzIsIHJvdW5kIHRvIDIgZGlnaXRzClBDMl9ub1FDIDwtIHJvdW5kKGltcG9ydGFuY2Vfbm9RQ1syLDJdLCAyKQpgYGAKCiMjIyBQbG90cwoKVXNpbmcgRmFjdG9FeHRyYQoKYGBge3J9CiMgc2NyZWUgcGxvdApmdml6X2VpZyhQQ0EuRENfaW1wX21ldGFiaW5kX2NsdXN0X2xvZzJfbm9RQ3MpCmBgYAoKYGBge3J9CiMgc2NvcmVzIHBsb3QKZnZpel9wY2FfaW5kKFBDQS5EQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMl9ub1FDcykKYGBgCgojIyMgTWFudWFsIHNjb3JlcyBwbG90CgpgYGB7cn0KIyB3cmFuZ2xpbmcgZGF0YSBwcmlvciB0byBwbG90IGZvciBlYXNlClBDX2Nvb3JkX25vUUNzX2xvZzIgPC0gUENfY29vcmRfbm9RQ3NfbG9nMiAlPiUKICBtdXRhdGUoc2FtcGxlMiA9IHNhbXBsZSkgJT4lCiAgbXV0YXRlX2F0KCJzYW1wbGUyIiwgc3RyX3N1Yiwgc3RhcnQ9NywgZW5kPTgpICU+JQogIG11dGF0ZShwZXJpb2QgPSBzYW1wbGUyKSAlPiUKICB1bml0ZSh0cmVhdG1lbnRfcGVyaW9kLCAidHJlYXRtZW50IiwgInBlcmlvZCIsIHNlcCA9ICJfIiwgcmVtb3ZlID0gRkFMU0UpICU+JQogIGRwbHlyOjpzZWxlY3QoIXNhbXBsZTIpICU+JQogIG11dGF0ZV9hdCgicGVyaW9kIiwgYXMuZmFjdG9yKSAlPiUKICAjIHJlbGV2ZWwgZmFjdG9ycwogIG11dGF0ZSh0cmVhdG1lbnRfcGVyaW9kID0gZmN0X3JlbGV2ZWwodHJlYXRtZW50X3BlcmlvZCwgYygiY29udHJvbF9iMSIsICJjb250cm9sX2IzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZXRhX2IxIiwgImJldGFfYjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkX2IxIiwgInJlZF9iMyIpKSwKICAgICAgICAgdHJlYXRtZW50ID0gZmN0X3JlbGV2ZWwodHJlYXRtZW50LCBjKCJjb250cm9sIiwgImJldGEiLCAicmVkIikpKQpgYGAKCmBgYHtyfQooUENBX3dpdGhvdXRRQ3MgPC0gUENfY29vcmRfbm9RQ3NfbG9nMiAlPiUKICAgZ2dwbG90KGFlcyh4ID0gRGltLjEsIHkgPSBEaW0uMiwKICAgICAgICAgICAgIGZpbGwgPSB0cmVhdG1lbnRfcGVyaW9kLAogICAgICAgICAgICAgdGV4dCA9IHNhbXBsZSkpICsKICAgZ2VvbV9wb2ludChzaGFwZSA9IDIxLCBhbHBoYSA9IDAuOCkgKwogICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBhbHBoYT0wLjUpICsKICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMCwgbGluZXR5cGUgPSAiZGFzaGVkIiwgYWxwaGE9MC41KSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiZGFya3NlYWdyZWVuMiIsICJkYXJrZ3JlZW4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YW4zIiwgIm9yYW5nZXJlZDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhdmVuZGVyYmx1c2gzIiwgImRhcmtyZWQiKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSAiYmxhY2siKSArICAKICB0aGVtZV9taW5pbWFsKCkgKwogIGNvb3JkX2ZpeGVkKFBDMl9ub1FDL1BDMV9ub1FDKSArCiAgbGFicyh4ID0gZ2x1ZTo6Z2x1ZSgiUEMxOiB7UEMxX25vUUN9JSIpLAogICAgICAgeSA9IGdsdWU6OmdsdWUoIlBDMjoge1BDMl9ub1FDfSUiKSwKICAgICAgIGZpbGwgPSAiR3JvdXAiLAogICAgICAgdGl0bGUgPSAiUHJpbmNpcGFsIENvbXBvbmVudHMgQW5hbHlzaXMgU2NvcmVzIFBsb3QiLAogICAgICAgc3VidGl0bGUgPSAiTG9nMiB0cmFuc2Zvcm1lZCBkYXRhLCBObyBRQ3MiKSkKZ2dwbG90bHkoUENBX3dpdGhvdXRRQ3MsIHRvb2x0aXAgPSAidGV4dCIpCmBgYAoKIyMjIEZhY2V0ZWQgYnkgcGVyaW9kCgpgYGB7cn0KKFBDQV9mYWNldGVkX25vUUNzIDwtIFBDX2Nvb3JkX25vUUNzX2xvZzIgJT4lCiAgIGdncGxvdChhZXMoeCA9IERpbS4xLCB5ID0gRGltLjIsCiAgICAgICAgICAgICBmaWxsID0gdHJlYXRtZW50X3BlcmlvZCwKICAgICAgICAgICAgIHRleHQgPSBzYW1wbGUpKSArCiAgIGdlb21fcG9pbnQoc2hhcGUgPSAyMSwgYWxwaGEgPSAwLjgpICsKICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgbGluZXR5cGUgPSAiZGFzaGVkIiwgYWxwaGE9MC41KSArCiAgIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIsIGFscGhhPTAuNSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImRhcmtzZWFncmVlbjIiLCAiZGFya2dyZWVuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFuMyIsICJvcmFuZ2VyZWQyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXZlbmRlcmJsdXNoMyIsICJkYXJrcmVkIikpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gImJsYWNrIikgKyAgCiAgdGhlbWVfYncoKSArCiAgY29vcmRfZml4ZWQoUEMyX25vUUMvUEMxX25vUUMpICsKICBsYWJzKHggPSBnbHVlOjpnbHVlKCJQQzE6IHtQQzFfbm9RQ30lIiksCiAgICAgICB5ID0gZ2x1ZTo6Z2x1ZSgiUEMyOiB7UEMyX25vUUN9JSIpLAogICAgICAgZmlsbCA9ICJ0cmVhdG1lbnRfcGVyaW9kIiwKICAgICAgIHRpdGxlID0gIlByaW5jaXBhbCBDb21wb25lbnRzIEFuYWx5c2lzIFNjb3JlcyBQbG90IiwKICAgICAgIHN1YnRpdGxlID0gIkxvZzIgdHJhbnNmb3JtZWQgZGF0YSwgTm8gUUNzIikgKwogIGZhY2V0X3dyYXAoIH4gcGVyaW9kKSArCiAgIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbD0id2hpdGUiKSkpCgpnZ3Bsb3RseShQQ0FfZmFjZXRlZF9ub1FDcywgdG9vbHRpcCA9ICJ0ZXh0IikKYGBgCgpgYGB7cn0KUENfY29vcmRfbm9RQ3NfbG9nMiAlPiUKICAgZ2dwbG90KGFlcyh4ID0gRGltLjEsIHkgPSBEaW0uMiwKICAgICAgICAgICAgIGZpbGwgPSBzZXgsCiAgICAgICAgICAgICB0ZXh0ID0gc2FtcGxlKSkgKwogICBnZW9tX3BvaW50KHNoYXBlID0gMjEsIGFscGhhID0gMC44KSArCiAgIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIsIGFscGhhPTAuNSkgKwogICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBhbHBoYT0wLjUpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJwdXJwbGUiLCAiYmx1ZSIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9ICJibGFjayIpICsgIAogIHRoZW1lX2J3KCkgKwogIGNvb3JkX2ZpeGVkKFBDMl9ub1FDL1BDMV9ub1FDKSArCiAgbGFicyh4ID0gZ2x1ZTo6Z2x1ZSgiUEMxOiB7UEMxX25vUUN9JSIpLAogICAgICAgeSA9IGdsdWU6OmdsdWUoIlBDMjoge1BDMl9ub1FDfSUiKSwKICAgICAgIGZpbGwgPSAic2V4IiwKICAgICAgIHRpdGxlID0gIlByaW5jaXBhbCBDb21wb25lbnRzIEFuYWx5c2lzIFNjb3JlcyBQbG90IiwKICAgICAgIHN1YnRpdGxlID0gIkxvZzIgdHJhbnNmb3JtZWQgZGF0YSwgTm8gUUNzIikgKwogIGZhY2V0X3dyYXAoIH4gcGVyaW9kKSArCiAgIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbD0id2hpdGUiKSkKYGBgCgojIyMgRmFjZXRlZCBieSB0cnQKCmBgYHtyLCBmaWcuaGVpZ2h0PTMsIGZpZy53aWR0aD04fQoKKFBDQV9mYWNldGVkX25vUUNzMiA8LSBQQ19jb29yZF9ub1FDc19sb2cyICU+JQogICBnZ3Bsb3QoYWVzKHggPSBEaW0uMSwgeSA9IERpbS4yLAogICAgICAgICAgICAgZmlsbCA9IHRyZWF0bWVudF9wZXJpb2QsCiAgICAgICAgICAgICB0ZXh0ID0gc2FtcGxlKSkgKwogICBnZW9tX3BvaW50KHNoYXBlID0gMjEsIGFscGhhID0gMC44KSArCiAgIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIsIGFscGhhPTAuNSkgKwogICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBhbHBoYT0wLjUpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJkYXJrc2VhZ3JlZW4yIiwgImRhcmtncmVlbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhbiIsICJvcmFuZ2VyZWQyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXZlbmRlcmJsdXNoMyIsICJkYXJrcmVkIiksCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygicHJlIGNvbnRyb2wiLCAicG9zdCBjb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmUgYmV0YSIsICJwb3N0IGJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZSBseWMiLCAicG9zdCBseWMiKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSAiYmxhY2siKSArICAKICB0aGVtZV9idygpICsKICBjb29yZF9maXhlZChQQzJfbm9RQy9QQzFfbm9RQykgKwogIGxhYnMoeCA9IGdsdWU6OmdsdWUoIlBDMToge1BDMV9ub1FDfSUiKSwKICAgICAgIHkgPSBnbHVlOjpnbHVlKCJQQzI6IHtQQzJfbm9RQ30lIiksCiAgICAgICBmaWxsID0gIkludGVydmVudGlvbiB0aW1lcG9pbnQiLAogICAgICAgdGl0bGUgPSAiUHJpbmNpcGFsIENvbXBvbmVudHMgQW5hbHlzaXMgU2NvcmVzIFBsb3QiLAogICAgICAgc3VidGl0bGUgPSAiTG9nMiB0cmFuc2Zvcm1lZCBkYXRhIGZhY2V0ZWQgYnkgdHJlYXRtZW50IGdyb3VwICIpICsKICAgZmFjZXRfd3JhcCggfiB0cmVhdG1lbnQpKQoKZ2dwbG90bHkoUENBX2ZhY2V0ZWRfbm9RQ3MyLCB0b29sdGlwID0gInRleHQiKQpgYGAKCkV4cG9ydCBwbG90CgpgYGB7cn0KZ2dzYXZlKHBsb3QgPSBQQ0FfZmFjZXRlZF9ub1FDczIsCiAgICAgICBmaWxlbmFtZSA9ICJwbG90cyBhbmQgZmlndXJlcy9QQ0EtZmFjZXRlZC1ieS1ncm91cC1saXBpZG9taWNzUE9TLnN2ZyIsCiAgICAgICBiZyA9ICJ0cmFuc3BhcmVudCIsCiAgICAgICBoZWlnaHQgPSAzLAogICAgICAgd2lkdGggPSA4KQpgYGAKCmBgYHtyfQpQQ19jb29yZF9ub1FDc19sb2cyICU+JQogICBnZ3Bsb3QoYWVzKHggPSBEaW0uMSwgeSA9IERpbS4yLAogICAgICAgICAgICAgZmlsbCA9IHNleCwKICAgICAgICAgICAgIHRleHQgPSBzYW1wbGUpKSArCiAgIGdlb21fcG9pbnQoc2hhcGUgPSAyMSwgYWxwaGEgPSAwLjgpICsKICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgbGluZXR5cGUgPSAiZGFzaGVkIiwgYWxwaGE9MC41KSArCiAgIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIsIGFscGhhPTAuNSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoInB1cnBsZSIsICJibHVlIikpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gImJsYWNrIikgKyAgCiAgdGhlbWVfYncoKSArCiAgY29vcmRfZml4ZWQoUEMyX25vUUMvUEMxX25vUUMpICsKICBsYWJzKHggPSBnbHVlOjpnbHVlKCJQQzE6IHtQQzFfbm9RQ30lIiksCiAgICAgICB5ID0gZ2x1ZTo6Z2x1ZSgiUEMyOiB7UEMyX25vUUN9JSIpLAogICAgICAgZmlsbCA9ICJzZXgiLAogICAgICAgdGl0bGUgPSAiUHJpbmNpcGFsIENvbXBvbmVudHMgQW5hbHlzaXMgU2NvcmVzIFBsb3QiLAogICAgICAgc3VidGl0bGUgPSAiTG9nMiB0cmFuc2Zvcm1lZCBkYXRhLCBObyBRQ3MiKSArCiAgZmFjZXRfd3JhcCggfiB0cmVhdG1lbnQpICsKICAgdGhlbWUoc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsPSJ3aGl0ZSIpKQpgYGAKCiMjIyBGYWNldGVkIGJ5IHNleAoKYGBge3J9CihQQ19jb29yZF9mYWNldHNleCA8LSBQQ19jb29yZF9ub1FDc19sb2cyICU+JQogICBnZ3Bsb3QoYWVzKHggPSBEaW0uMSwgeSA9IERpbS4yLAogICAgICAgICAgICAgZmlsbCA9IHRyZWF0bWVudF9wZXJpb2QsCiAgICAgICAgICAgICB0ZXh0ID0gc2FtcGxlKSkgKwogICBnZW9tX3BvaW50KHNoYXBlID0gMjEsIGFscGhhID0gMC44KSArCiAgIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gImRhc2hlZCIsIGFscGhhPTAuNSkgKwogICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBhbHBoYT0wLjUpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJkYXJrc2VhZ3JlZW4yIiwgImRhcmtncmVlbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhbjMiLCAib3JhbmdlcmVkMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF2ZW5kZXJibHVzaDMiLCAiZGFya3JlZCIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9ICJibGFjayIpICsgIAogIHRoZW1lX2J3KCkgKwogIGNvb3JkX2ZpeGVkKFBDMl9ub1FDL1BDMV9ub1FDKSArCiAgbGFicyh4ID0gZ2x1ZTo6Z2x1ZSgiUEMxOiB7UEMxX25vUUN9JSIpLAogICAgICAgeSA9IGdsdWU6OmdsdWUoIlBDMjoge1BDMl9ub1FDfSUiKSwKICAgICAgIGZpbGwgPSAic2V4IiwKICAgICAgIHRpdGxlID0gIlByaW5jaXBhbCBDb21wb25lbnRzIEFuYWx5c2lzIFNjb3JlcyBQbG90IiwKICAgICAgIHN1YnRpdGxlID0gIkxvZzIgdHJhbnNmb3JtZWQgZGF0YSwgTm8gUUNzIikgKwogIGZhY2V0X3dyYXAoIH4gc2V4KSArCiAgIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbD0id2hpdGUiKSkpCgpnZ3Bsb3RseShQQ19jb29yZF9mYWNldHNleCwgdG9vbHRpcCA9ICJ0ZXh0IikKYGBgCgojIE11bHRpbGV2ZWwgUENBCgpUaGlzIHR5cGUgb2YgUENBIGFjY291bnRzIGZvciB0aGUgc3RydWN0dXJlIG9mIHBhaXJlZCBkYXRhLCBhbGxvd2luZyBmb3IgYSBtb3JlIGFjY3VyYXRlIGFzc2Vzc21lbnQgb2YgYmlvbG9naWNhbCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRyZWF0bWVudCBncm91cHMsIG5vdCBkaWZmZXJlbmNlcyBhdHRyaWJ1dGVkIHRvIHRoZSBuYXR1cmFsIHZhcmlhdGlvbiBiZXR3ZWVuIGluZGl2aWR1YWxzLgoKU2VlIDxodHRwOi8vbWl4b21pY3Mub3JnL21ldGhvZHMvbXVsdGlsZXZlbC8+IGZvciBtb3JlIGluZm8uCgojIyBXcmFuZ2xlCgpgYGB7cn0KCkRhdGFfZm9yTVBDQSA8LSBEQ19pbXBfbWV0YWJpbmRfY2x1c3RfbG9nMl9ub1FDcyAlPiUKICBtdXRhdGVfYXQoInN1YmplY3QiLCBhcy5mYWN0b3IpICU+JQogIG11dGF0ZShzYW1wbGUyID0gc2FtcGxlLAogICAgICAgICBiX2MgPSBjYXJvdGVub2lkcyRiX2Nfbm1vbF9sX3BsYXNtYSwKICAgICAgICAgbHljID0gY2Fyb3Rlbm9pZHMkbHljX25tb2xfbF9wbGFzbWEsCiAgICAgICAgIGFwbzEzb25lID0gY2Fyb3Rlbm9pZHMkYXBvMTNvbmVfbm1vbF9sX3BsYXNtYSwKICAgICAgICAgcmV0aW5vbCA9IGNhcm90ZW5vaWRzJHJldGlub2xfbm1vbF9sX3BsYXNtYSwKICAgICAgICAgdG90YWxfY2Fyb3QgPSBjYXJvdGVub2lkcyR0b3RhbF9jYXJvdGVub2lkcykgJT4lCiAgbXV0YXRlX2F0KCJzYW1wbGUyIiwgc3RyX3N1Yiwgc3RhcnQ9NywgZW5kPTgpICU+JQogIG11dGF0ZShwZXJpb2QgPSBzYW1wbGUyKSAlPiUKICBkcGx5cjo6c2VsZWN0KGMoMToxNCksIHBlcmlvZCwgYl9jLCBseWMsIGFwbzEzb25lLCByZXRpbm9sLCB0b3RhbF9jYXJvdCwgZXZlcnl0aGluZygpKSAlPiUKICBkcGx5cjo6c2VsZWN0KCFzYW1wbGUyKQogCgpzdW1tYXJ5KGFzLmZhY3RvcihEYXRhX2Zvck1QQ0Ekc3ViamVjdCkpCgojIG1ha2UgYSB2ZWN0b3IgZm9yIG1ldGEgdmFyaWFibGVzCihtZXRhdmFyIDwtIERhdGFfZm9yTVBDQVssYygxOjIwKV0gJT4lCiAgICBjb2xuYW1lcygpKQpgYGAKCiMjIFJlZ3VsYXIgUENBCgpgYGB7cn0KbWl4T21pY3NQQ0EucmVzdWx0IDwtIG1peE9taWNzOjpwY2EoRGF0YV9mb3JNUENBWywhbmFtZXMoRGF0YV9mb3JNUENBKSAlaW4lIG1ldGF2YXJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlciA9IEZBTFNFKQoKcGxvdEluZGl2KG1peE9taWNzUENBLnJlc3VsdCwgCiAgICAgICAgICBpbmQubmFtZXMgPSBEYXRhX2Zvck1QQ0Ekc3ViamVjdCwgCiAgICAgICAgICBncm91cCA9IERhdGFfZm9yTVBDQSR0cmVhdG1lbnQsIAogICAgICAgICAgbGVnZW5kID0gVFJVRSwgCiAgICAgICAgICBsZWdlbmQudGl0bGUgPSAiVHJlYXRtZW50IiwgCiAgICAgICAgICB0aXRsZSA9ICdSZWd1bGFyIFBDQSwgTGlwaWRvbWljcyBDMTggKCspJykKCmBgYAoKIyMgTXVsdGlsZXZlbCBQQ0EKCldpdGggYWxsIGRhdGEKCmBgYHtyfQptdWx0aWxldmVsUENBLnJlc3VsdCA8LSBtaXhPbWljczo6cGNhKERhdGFfZm9yTVBDQVssLShjKDE6MjApKV0sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsZXZlbCA9IERhdGFfZm9yTVBDQSRzdWJqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlciA9IEZBTFNFLG5jb21wID0gMTApCgpwbG90SW5kaXYobXVsdGlsZXZlbFBDQS5yZXN1bHQsIAogICAgICAgICAgaW5kLm5hbWVzID0gRGF0YV9mb3JNUENBJHBlcmlvZCwgCiAgICAgICAgICBncm91cCA9IERhdGFfZm9yTVBDQSR0cmVhdG1lbnQsIAogICAgICAgICAgbGVnZW5kID0gVFJVRSwgCiAgICAgICAgICBsZWdlbmQudGl0bGUgPSAiVHJlYXRtZW50IiwgCiAgICAgICAgICB0aXRsZSA9ICdNdWx0aWxldmVsIFBDQSwgTGlwaWRvbWljcyBDMTggKCspJyxjb21wID0gYygxLDIpKQoKCmBgYAoKIyMjIExvYWRpbmdzCgpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTEyfQpwbG90TG9hZGluZ3MobXVsdGlsZXZlbFBDQS5yZXN1bHQsIG5kaXNwbGF5ID0gMzApCmBgYAoKCiMgUENBdG9vbHMKCiMjIyBEYXRhIHdyYW5nbGluZwoKYGBge3J9CiMgY3JlYXRlIHJlbCBhYnVuZCBkZiBzdWl0YWJsZSBmb3IgUENBdG9vbHMgcGFja2FnZQppbXBfY2x1c3Rfb21pY3NkYXRhX2ZvclBDQXRvb2xzIDwtIERhdGFfZm9yTVBDQSAlPiUKICAjIHNlbGVjdCBvbmx5IHNhbXBsZSBJRCBhbmQgZmVhdHVyZSBjb2x1bW5zCiAgZHBseXI6OnNlbGVjdChzYW1wbGUsCiAgICAgICAgICAgICAgICAyMTpuY29sKC4pKSAlPiUKICAjIHRyYW5zcG9zZQogIHQoKSAlPiUKICAjIGNvbnZlcnQgYmFjayB0byBkZgogIGFzLmRhdGEuZnJhbWUoKQoKbmFtZXMoaW1wX2NsdXN0X29taWNzZGF0YV9mb3JQQ0F0b29scykgPC0gaW1wX2NsdXN0X29taWNzZGF0YV9mb3JQQ0F0b29sc1sxLF0gIyBtYWtlIHNhbXA7ZSBJRHMgY29sdW1uIG5hbWVzCgppbXBfY2x1c3Rfb21pY3NkYXRhX2ZvclBDQXRvb2xzIDwtIGltcF9jbHVzdF9vbWljc2RhdGFfZm9yUENBdG9vbHNbLTEsXSAjIHJlbW92ZSBzYW1wbGUgSUQgcm93CgojIGNyZWF0ZSBtZXRhZGF0YSBkZiBzdWl0YWJsZSBmb3IgUENBdG9vbHMgcGNrZwoKbWV0YWRhdGFfZm9yUENBdG9vbHMgPC0gRGF0YV9mb3JNUENBWywxOjIwXQoKbWV0YWRhdGFfZm9yUENBdG9vbHMgPC0gbWV0YWRhdGFfZm9yUENBdG9vbHMgJT4lCiAgdW5pdGUoInRyZWF0bWVudF9wZXJpb2QiLCBjKCJ0cmVhdG1lbnQiLCAicGVyaW9kIiksIHNlcCA9ICJfIiwgcmVtb3ZlID0gRkFMU0UpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic2FtcGxlIikKICAKCiMgY3JlYXRlIGEgdmVjdG9yIHNvIHRoYXQgY29sIG5hbWVzIGluIGFidW5kYW5jZSBkZiBtYXRjaGVzIG1ldGFkYXRhIGRmCm9yZGVyX2ZvclBDQXRvb2xzIDwtIG1hdGNoKGNvbG5hbWVzKGltcF9jbHVzdF9vbWljc2RhdGFfZm9yUENBdG9vbHMpLCByb3duYW1lcyhtZXRhZGF0YV9mb3JQQ0F0b29scykpCgojIHJlb3JkZXIgY29sIG5hbWVzIGluIGFidW5kYW5jZSBkZiBzbyB0aGF0IGl0IG1hdGNoZXMgbWV0YWRhdGEKbG9nMl9hYnVuZGFuY2VzX3Jlb3JkZXJlZF9mb3JQQ0F0b29scyA8LSBpbXBfY2x1c3Rfb21pY3NkYXRhX2ZvclBDQXRvb2xzWyxvcmRlcl9mb3JQQ0F0b29sc10gJT4lCiAgIyBjaGFuZ2UgYWJ1bmRhbmNlIGRmIHRvIG51bWVyaWMKICBtdXRhdGVfYWxsKGFzLm51bWVyaWMpCgpgYGAKCiMjIyBQQ0EKCiMjIyMgY29sYnkgdHJ0CgpgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTh9CiMgcGNhCnAgPC0gUENBdG9vbHM6OnBjYShsb2cyX2FidW5kYW5jZXNfcmVvcmRlcmVkX2ZvclBDQXRvb2xzLAogICAgICAgICAgICAgICAgICAgbWV0YWRhdGEgPSBtZXRhZGF0YV9mb3JQQ0F0b29scywKICAgICAgICAgICAgICAgICAgIHNjYWxlID0gRkFMU0UsICMgdXNpbmcgc2NhbGVkIGRhdGEgYWxyZWFkeSAobG9nMiB0cmFuc2Zvcm1lZCkKICAgICAgICAgCikKCmJpcGxvdChwLCAKICAgICAgIGxhYiA9IHBhc3RlMChtZXRhZGF0YV9mb3JQQ0F0b29scyRzdWJqZWN0KSwKICAgICAgIGNvbGJ5ID0gJ3RyZWF0bWVudCcsCiAgICAgICBjb2xrZXkgPSBjKCJjb250cm9sIiA9ICJsaWdodGdyZWVuIiwKICAgICAgICAgICAgICAgICAgImJldGEiID0gIm9yYW5nZSIsCiAgICAgICAgICAgICAgICAgICJyZWQiID0gInRvbWF0byIpLAogICAgICAgaGxpbmUgPSAwLCB2bGluZSA9IDAsCiAgICAgICBsZWdlbmRQb3NpdGlvbiA9ICdyaWdodCcsCiAgICAgICB0aXRsZSA9ICJQQ0EgU2NvcmVzIFBsb3Qgd2l0aCBMb2FkaW5ncyIsCiAgICAgICBzdWJ0aXRsZSA9ICJMb2cyIHRyYW5zZm9ybWVkIGRhdGEuIDk1JSBDSSBlbGxpcHNlcyIsCiAgICAgICBlbGxpcHNlID0gVFJVRSwKICAgICAgIGVsbGlwc2VUeXBlID0gJ3QnLCAjIGFzc3VtZXMgbXVsdGl2YXJpYXRlCiAgICAgICBlbGxpcHNlTGV2ZWwgPSAwLjk1LAogICAgICAgZWxsaXBzZUZpbGwgPSBUUlVFLAogICAgICAgZWxsaXBzZUFscGhhID0gMC4yLAogICAgICAgZWxsaXBzZUxpbmVTaXplID0gMCwKICAgICAgIHNob3dMb2FkaW5ncyA9IFRSVUUsbnRvcExvYWRpbmdzID0gMTApCgpgYGAKCiMjIyMgY29sYnkgcGVyaW9kCgpgYGB7ciwgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTh9CiMgcGNhCgpiaXBsb3QocCwKICAgICAgIGxhYiA9IHBhc3RlMChtZXRhZGF0YV9mb3JQQ0F0b29scyRzdWJqZWN0KSwKICAgICAgIGNvbGJ5ID0gJ3BlcmlvZCcsCiAgICAgICBjb2xrZXkgPSBjKCJiMSIgPSAiZ3JheSIsCiAgICAgICAgICAgICAgICAgICJiMyIgPSAicGluayIpLAogICAgICAgaGxpbmUgPSAwLCB2bGluZSA9IDAsCiAgICAgICBsZWdlbmRQb3NpdGlvbiA9ICdyaWdodCcsCiAgICAgICB0aXRsZSA9ICJQQ0EgU2NvcmVzIFBsb3Qgd2l0aCBMb2FkaW5ncyIsCiAgICAgICBzdWJ0aXRsZSA9ICJMb2cyIHRyYW5zZm9ybWVkIGRhdGEuIDk1JSBDSSBlbGxpcHNlcyIsCiAgICAgICBlbGxpcHNlID0gVFJVRSwKICAgICAgIGVsbGlwc2VUeXBlID0gJ3QnLCAjIGFzc3VtZXMgbXVsdGl2YXJpYXRlCiAgICAgICBlbGxpcHNlTGV2ZWwgPSAwLjk1LAogICAgICAgZWxsaXBzZUZpbGwgPSBUUlVFLAogICAgICAgZWxsaXBzZUFscGhhID0gMC4yLAogICAgICAgZWxsaXBzZUxpbmVTaXplID0gMCwKICAgICAgIHNob3dMb2FkaW5ncyA9IFRSVUUpCgpgYGAKCiMjIyMgY29sYnkgdHJ0X3BlcmlvZAoKYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD04fQoKYmlwbG90KHAsCiAgICAgICBsYWIgPSBwYXN0ZTAobWV0YWRhdGFfZm9yUENBdG9vbHMkc3ViamVjdCksCiAgICAgICBjb2xieSA9ICd0cmVhdG1lbnRfcGVyaW9kJywKICAgICAgIGNvbGtleSA9IGMoImNvbnRyb2xfYjEiID0gImRhcmtzZWFncmVlbjIiLAogICAgICAgICAgICAgICAiY29udHJvbF9iMyIgPSAiZGFya2dyZWVuIiwKICAgICAgICAgICAgICAgImJldGFfYjEiID0gInRhbjMiLAogICAgICAgICAgICAgICAiYmV0YV9iMyIgPSAib3JhbmdlcmVkMiIsCiAgICAgICAgICAgICAgICJyZWRfYjEiID0gImxhdmVuZGVyYmx1c2gzIiwKICAgICAgICAgICAgICAgInJlZF9iMyIgPSAiZGFya3JlZCIpLAogICAgICAgaGxpbmUgPSAwLCB2bGluZSA9IDAsCiAgICAgICBsZWdlbmRQb3NpdGlvbiA9ICdyaWdodCcsCiAgICAgICB0aXRsZSA9ICJQQ0EgU2NvcmVzIFBsb3Qgd2l0aCBMb2FkaW5ncyIsCiAgICAgICBzdWJ0aXRsZSA9ICJMb2cyIHRyYW5zZm9ybWVkIGRhdGEuIDk1JSBDSSBlbGxpcHNlcy4iLAogICAgICAgZWxsaXBzZSA9IFRSVUUsCiAgICAgICBlbGxpcHNlVHlwZSA9ICd0JywgIyBhc3N1bWVzIG11bHRpdmFyaWF0ZQogICAgICAgZWxsaXBzZUxldmVsID0gMC45NSwKICAgICAgIGVsbGlwc2VGaWxsID0gVFJVRSwKICAgICAgIGVsbGlwc2VBbHBoYSA9IDAuMiwKICAgICAgIGVsbGlwc2VMaW5lU2l6ZSA9IDAsCiAgICAgICBzaG93TG9hZGluZ3MgPSBUUlVFLCBudG9wTG9hZGluZ3MgPSAxMCkKCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD04fQoKYmlwbG90KHAsCiAgICAgICBsYWIgPSBwYXN0ZTAobWV0YWRhdGFfZm9yUENBdG9vbHMkc3ViamVjdCksCiAgICAgICBjb2xieSA9ICd0cmVhdG1lbnRfcGVyaW9kJywKICAgICAgIGNvbGtleSA9IGMoImNvbnRyb2xfYjEiID0gImRhcmtzZWFncmVlbjIiLAogICAgICAgICAgICAgICAiY29udHJvbF9iMyIgPSAiZGFya2dyZWVuIiwKICAgICAgICAgICAgICAgImJldGFfYjEiID0gInRhbjMiLAogICAgICAgICAgICAgICAiYmV0YV9iMyIgPSAib3JhbmdlcmVkMiIsCiAgICAgICAgICAgICAgICJyZWRfYjEiID0gImxhdmVuZGVyYmx1c2gzIiwKICAgICAgICAgICAgICAgInJlZF9iMyIgPSAiZGFya3JlZCIpLAogICAgICAgaGxpbmUgPSAwLCB2bGluZSA9IDAsCiAgICAgICBsZWdlbmRQb3NpdGlvbiA9ICdyaWdodCcsCiAgICAgICB0aXRsZSA9ICJQQ0EgU2NvcmVzIFBsb3Qgd2l0aCBMb2FkaW5ncyIsCiAgICAgICBzdWJ0aXRsZSA9ICJMb2cyIHRyYW5zZm9ybWVkIGRhdGEuIDk1JSBDSSBlbGxpcHNlcy4iLAogICAgICAgc2hvd0xvYWRpbmdzID0gVFJVRSwgbnRvcExvYWRpbmdzID0gMTApCgpgYGAKCkxldCdzIGV4cGxvcmUgYSBsaXR0bGUgbW9yZQoKSG93IG1hbnkgUENzIGRvIHdlIG5lZWQgdG8gY2FwdHVyZSBhdCBsZWFzdCA4MCUgdmFyaWFuY2U/CgpgYGB7cn0Kd2hpY2goY3Vtc3VtKHAkdmFyaWFuY2UpID4gODApWzFdCmBgYAoKVGhpcyBzaG93cyB3ZSdkIG5lZWQgcXVpdGUgYSBmZXcgUENzIHRvIGNhcHR1cmUgbW9zdCBvZiB0aGUgdmFyaWFuY2UuCgojIyMgUGFpcnMgcGxvdHMKCkhlcmUsIHdlIHdpbGwgbG9vayBhdCBzZXBhcmF0aW9ucyBmb3Igc2V2ZXJhbCBjb21wb25lbnRzIGF0IG9uY2UgdXNpbmcgcGFpcnMgcGxvdHMuCgojIyMjIHRyZWF0bWVudF9wZXJpb2QKCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9MTB9CnBhaXJzcGxvdChwLAogICAgY29tcG9uZW50cyA9IGdldENvbXBvbmVudHMocCwgYygxOjEwKSksCiAgICB0cmlhbmdsZSA9IFRSVUUsIHRyaWFuZ2xlbGFiU2l6ZSA9IDEyLAogICAgaGxpbmUgPSAwLCB2bGluZSA9IDAsCiAgICBwb2ludFNpemUgPSAwLjQsCiAgICBncmlkbGluZXMubWFqb3IgPSBGQUxTRSwgZ3JpZGxpbmVzLm1pbm9yID0gRkFMU0UsCiAgICBjb2xieSA9ICd0cmVhdG1lbnRfcGVyaW9kJywKICAgIGNvbGtleSA9IGMoImNvbnRyb2xfYjEiID0gImRhcmtzZWFncmVlbjIiLAogICAgICAgICAgICAgICAiY29udHJvbF9iMyIgPSAiZGFya2dyZWVuIiwKICAgICAgICAgICAgICAgImJldGFfYjEiID0gInRhbiIsCiAgICAgICAgICAgICAgICJiZXRhX2IzIiA9ICJvcmFuZ2VyZWQyIiwKICAgICAgICAgICAgICAgInJlZF9iMSIgPSAibGF2ZW5kZXJibHVzaDMiLAogICAgICAgICAgICAgICAicmVkX2IzIiA9ICJkYXJrcmVkIiksCiAgICB0aXRsZSA9ICdQYWlycyBwbG90JywgcGxvdGF4ZXMgPSBGQUxTRSwKICAgIG1hcmdpbmdhcHMgPSB1bml0KGMoLTAuMDEsIC0wLjAxLCAtMC4wMSwgLTAuMDEpLCAnY20nKSkKCmBgYAoKIyMjIyBwZXJpb2QKCmBgYHtyLCBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9MTB9CnBhaXJzcGxvdChwLAogICAgY29tcG9uZW50cyA9IGdldENvbXBvbmVudHMocCwgYygxOjEwKSksCiAgICB0cmlhbmdsZSA9IFRSVUUsIHRyaWFuZ2xlbGFiU2l6ZSA9IDEyLAogICAgaGxpbmUgPSAwLCB2bGluZSA9IDAsCiAgICBwb2ludFNpemUgPSAwLjQsCiAgICBncmlkbGluZXMubWFqb3IgPSBGQUxTRSwgZ3JpZGxpbmVzLm1pbm9yID0gRkFMU0UsCiAgICBjb2xieSA9ICdwZXJpb2QnLAogICAgY29sa2V5ID0gYygiYjEiID0gImRhcmtncmF5IiwKICAgICAgICAgICAgICAgImIzIiA9ICJwaW5rIiksCiAgICB0aXRsZSA9ICdQYWlycyBwbG90JywgcGxvdGF4ZXMgPSBGQUxTRSwKICAgIG1hcmdpbmdhcHMgPSB1bml0KGMoLTAuMDEsIC0wLjAxLCAtMC4wMSwgLTAuMDEpLCAnY20nKSkKCmBgYAoKIyMjIyBzZXgKCkFyZSB0aGVyZSBhbnkgb2J2aW91cyBjbHVzdGVyaW5ncyB3aGVuIGNvbG9yZWQgYnkgc2V4PwoKYGBge3IsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD0xMH0KICBwYWlyc3Bsb3QocCwKICAgIGNvbXBvbmVudHMgPSBnZXRDb21wb25lbnRzKHAsIGMoMToxMCkpLAogICAgdHJpYW5nbGUgPSBUUlVFLCB0cmlhbmdsZWxhYlNpemUgPSAxMiwKICAgIGhsaW5lID0gMCwgdmxpbmUgPSAwLAogICAgcG9pbnRTaXplID0gMC40LAogICAgZ3JpZGxpbmVzLm1ham9yID0gRkFMU0UsIGdyaWRsaW5lcy5taW5vciA9IEZBTFNFLAogICAgY29sYnkgPSAnc2V4JywgCiAgICBjb2xrZXkgPSBjKCJNIiA9ICJyZWQiLAogICAgICAgICAgICAgICAiRiIgPSAicHVycGxlIiksCiAgICB0aXRsZSA9ICdQYWlycyBwbG90JywgcGxvdGF4ZXMgPSBGQUxTRSwKICAgIG1hcmdpbmdhcHMgPSB1bml0KGMoLTAuMDEsIC0wLjAxLCAtMC4wMSwgLTAuMDEpLCAnY20nKSkKYGBgCgojIyBFaWdlbiBjb3JwbG90cwoKVGhpcyBpcyBhIGNvb2wgd2F5IHRvIGV4cGxvcmUgdGhlIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIHRoZSBtZXRhZGF0YSBhbmQgdGhlIFBDcyEgSSB3YW50IHRvIGxvb2sgYXQgaG93IHRoZSBtZXRhdmFyaWFibGVzIGNvcnJlbGF0ZSB3aXRoIFBDcyB0aGF0IGFjY291bnQgZm9yIDgwJSB2YXJpYXRpb24gaW4gdGhlIGRhdGFzZXQuCgpBZ2FpbjogSG93IG1hbnkgUENzIGRvIHdlIG5lZWQgdG8gY2FwdHVyZSBhdCBsZWFzdCA4MCUgdmFyaWFuY2U/CgpgYGB7cn0Kd2hpY2goY3Vtc3VtKHAkdmFyaWFuY2UpID4gODApWzFdCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD03LjV9CiAgZWlnZW5jb3JwbG90KHAsCiAgICBjb21wb25lbnRzID0gZ2V0Q29tcG9uZW50cyhwLCAxOndoaWNoKGN1bXN1bShwJHZhcmlhbmNlKSA+IDgwKVsxXSksICMgZ2V0IGNvbXBvbmVudHMgdGhhdCBhY2NvdW50IGZvciA4MCUgdmFyaWFuY2UKICAgIG1ldGF2YXJzID0gY29sbmFtZXMobWV0YWRhdGFfZm9yUENBdG9vbHMpLAogICAgY29sID0gYygnZGFya2JsdWUnLCAnYmx1ZTInLCAnZ3JheScsICdyZWQyJywgJ2RhcmtyZWQnKSwKICAgIGNleENvcnZhbCA9IDAuNywKICAgIGNvbENvcnZhbCA9ICd3aGl0ZScsCiAgICBmb250Q29ydmFsID0gMiwKICAgIHBvc0xhYiA9ICdib3R0b21sZWZ0JywKICAgIHJvdExhYlggPSA0NSwKICAgIHBvc0NvbEtleSA9ICd0b3AnLAogICAgY2V4TGFiQ29sS2V5ID0gMS41LAogICAgc2NhbGUgPSBUUlVFLAogICAgbWFpbiA9ICdQQzEtMTUgbWV0YWRhdGEgY29ycmVsYXRpb25zJywKICAgIGNvbEZyYW1lID0gJ3doaXRlJywKICAgIHBsb3RSc3F1YXJlZCA9IEZBTFNFKQpgYGAKCmBgYHtyLCBmaWcud2lkdGg9MTQsIGZpZy5oZWlnaHQ9Ny41fQogIGVpZ2VuY29ycGxvdChwLAogICAgY29tcG9uZW50cyA9IGdldENvbXBvbmVudHMocCwgMTp3aGljaChjdW1zdW0ocCR2YXJpYW5jZSkgPiA4MClbMV0pLAogICAgbWV0YXZhcnMgPSBjb2xuYW1lcyhtZXRhZGF0YV9mb3JQQ0F0b29scyksCiAgICBjb2wgPSBjKCd3aGl0ZScsICdjb3Juc2lsazEnLCAnZ29sZCcsICdmb3Jlc3RncmVlbicsICdkYXJrZ3JlZW4nKSwKICAgIGNleENvcnZhbCA9IDEuMiwKICAgIGZvbnRDb3J2YWwgPSAyLAogICAgcG9zTGFiID0gJ2FsbCcsCiAgICByb3RMYWJYID0gNDUsCiAgICBzY2FsZSA9IFRSVUUsCiAgICBtYWluID0gYnF1b3RlKFByaW5jaXBhbCB+IGNvbXBvbmVudCB+IFNwZWFybWFuIH4gcl4yIH4gbWV0YWRhdGEgfiBjb3JyZWxhdGVzKSwKICAgIHBsb3RSc3F1YXJlZCA9IFRSVUUsCiAgICBjb3JGVU4gPSAnc3BlYXJtYW4nLAogICAgY29yVVNFID0gJ3BhaXJ3aXNlLmNvbXBsZXRlLm9icycsCiAgICBjb3JNdWx0aXBsZVRlc3RDb3JyZWN0aW9uID0gJ0JIJywKICAgIHNpZ25pZlN5bWJvbHMgPSBjKCcqKioqJywgJyoqKicsICcqKicsICcqJywgJycpLAogICAgc2lnbmlmQ3V0cG9pbnRzID0gYygwLCAwLjAwMDEsIDAuMDAxLCAwLjAxLCAwLjA1LCAxKSkKYGBgCgojIFVuaXZhcmlhdGUgYW5hbHlzaXMKCiMjIFdyYW5nbGUgZGF0YQoKYGBge3J9CgojIHVzaW5nIHRoZSBtb3N0IGNvbnZlbmllbnQgZGYgdG8gY29udmVydCB0byB0aWR5CmRmX2Zvcl9zdGF0cyA8LSBEYXRhX2Zvck1QQ0EgJT4lCiAgcGl2b3RfbG9uZ2VyKDIxOm5jb2woLiksCiAgICAgICAgICAgICAgIG5hbWVzX3RvID0gIm16X3J0IiwKICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gInJlbF9hYnVuZF9sb2cyIikgJT4lCiAgdW5pdGUoInRyZWF0bWVudF9wZXJpb2QiLCAidHJlYXRtZW50IiwgInBlcmlvZCIsIHNlcCA9ICJfIiwgcmVtb3ZlID0gRkFMU0UpICU+JQogIG11dGF0ZV9hdCgidHJlYXRtZW50IiwgYXMuZmFjdG9yKQpgYGAKCmBgYHtyfQojIHR1cm4gb2ZmIHNjaSBub3RhdGlvbiBvdXRwdXRzCm9wdGlvbnMoc2NpcGVuID0gOTk5KQpgYGAKCiMjIFBhcmFtZXRyaWMgdGVzdHMKCiMjIyBBTk9WQSBhY3Jvc3MgdHJlYXRtZW50IHRpbWVwb2ludHMKCmBgYHtyLCBhbm92YSB0cmVhdG1lbnR9CmRmX2Zvcl9zdGF0cyR0cmVhdG1lbnRfcGVyaW9kIDwtIGFzLmZhY3RvcihkZl9mb3Jfc3RhdHMkdHJlYXRtZW50X3BlcmlvZCkKCnRydF9hbm92YV9vdXRwdXRfZGYgPC0gZGZfZm9yX3N0YXRzICU+JSAKICBkcGx5cjo6c2VsZWN0KHN1YmplY3QsIHNhbXBsZSwgdHJlYXRtZW50X3BlcmlvZCwgbXpfcnQsIHJlbF9hYnVuZF9sb2cyKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgYW5vdmFfdGVzdChyZWxfYWJ1bmRfbG9nMiB+IHRyZWF0bWVudF9wZXJpb2QsIHdpZCA9IHN1YmplY3QsCiAgICAgICAgICAgICBkZXRhaWxlZCA9IFRSVUUpICU+JQogIGFkanVzdF9wdmFsdWUobWV0aG9kID0gIkJIIikgJT4lCiAgYXMuZGF0YS5mcmFtZSgpCgoKdHJ0X2Fub3ZhX3NpZyA8LSB0cnRfYW5vdmFfb3V0cHV0X2RmICU+JQogIGZpbHRlcihwLmFkaiA8IC4wNSkKCmhlYWQodHJ0X2Fub3ZhX3NpZykKCiMgaG93IG1hbnkgc2lnbmlmaWNhbnQgZmVhdHVyZXM/Cm5yb3codHJ0X2Fub3ZhX3NpZykKCmBgYAoKYGBge3J9CnRydF9wZXJpb2RfQU5PVkFfdHVrZXkgPC0gZGZfZm9yX3N0YXRzICU+JSAKICBkcGx5cjo6c2VsZWN0KHN1YmplY3QsIHNhbXBsZSwgdHJlYXRtZW50X3BlcmlvZCwgbXpfcnQsIHJlbF9hYnVuZF9sb2cyKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgdHVrZXlfaHNkKHJlbF9hYnVuZF9sb2cyIH4gdHJlYXRtZW50X3BlcmlvZCwgd2lkID0gc3ViamVjdCkKCnRydF90dWtleUhTRF9zaWcgPC0gdHJ0X3BlcmlvZF9BTk9WQV90dWtleSAlPiUKICBmaWx0ZXIocC5hZGogPCAuMDUpCmBgYAoKIyMjIHQgdGVzdHMgKHVucGFpcmVkIGFuZCBwYWlyZWQpCgojIyMjIFBhaXJlZCBjb250cm9sCgpgYGB7cn0KIyBydW4gcGFpcmVkIHQtdGVzdHMgZm9yIGNvbnRyb2wgaW50ZXJ2ZW50aW9uCmN0cmxfdC50ZXN0X3BhaXJlZCA8LSBkZl9mb3Jfc3RhdHMgJT4lCiAgZmlsdGVyKHRyZWF0bWVudCA9PSAiY29udHJvbCIpICU+JQogZHBseXI6OnNlbGVjdChzdWJqZWN0LCBwZXJpb2QsIG16X3J0LCByZWxfYWJ1bmRfbG9nMikgJT4lCiAgZ3JvdXBfYnkobXpfcnQpICU+JQogIHRfdGVzdChyZWxfYWJ1bmRfbG9nMiB+IHBlcmlvZCwgCiAgICAgICAgIHBhaXJlZCA9IFRSVUUsIAogICAgICAgICBwLmFkanVzdC5tZXRob2QgPSAiQkgiKSAlPiUgIyBCZW5qYW1pbmktSG9jaGJlcmcgY29udHJvbGxpbmcgdG8gbG93ZXIgZmFsc2UgcG9zaXRpdmVzCiAgYWRkX3NpZ25pZmljYW5jZSgpCmBgYAoKU3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBmZWF0dXJlcwoKYGBge3J9CiMgd2hpY2ggZmVhdHVyZXMgYXJlIHNpZ25pZmljYW50PwpjdHJsX3QudGVzdF9wYWlyZWRfc2lnIDwtIGN0cmxfdC50ZXN0X3BhaXJlZCAlPiUKICBmaWx0ZXIocCA8IDAuMDUpCmthYmxlKGN0cmxfdC50ZXN0X3BhaXJlZF9zaWcpCgojIGhvdyBtYW55IGFyZSBzaWduaWZpY2FudD8KbnJvdyhjdHJsX3QudGVzdF9wYWlyZWRfc2lnKQpgYGAKCiMjIyMjIEFOT1ZBIG92ZXJsYXAKCktlZXAgc2lnIGZlYXR1cmVzIGluIHQtdGVzdCB0aGF0IGhhdmUgYSBtYXRjaCBpbiBzaWcgQU5PVkEKCmBgYHtyfQpzaWdfb3ZlcmxhcF9jdHJsX3BhaXJlZCA8LSBpbm5lcl9qb2luKGN0cmxfdC50ZXN0X3BhaXJlZF9zaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ0X3R1a2V5SFNEX3NpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9ICJtel9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gYygiLnQtdGVzdCIsICIudHVrZXlzIikpCmBgYAoKCiMjIyMgUGFpcmVkIGJldGEKCmBgYHtyfQojIHJ1biBwYWlyZWQgdC10ZXN0cyBmb3IgY29udHJvbCBpbnRlcnZlbnRpb24KYmV0YV90LnRlc3RfcGFpcmVkIDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIodHJlYXRtZW50ID09ICJiZXRhIikgJT4lCiBkcGx5cjo6c2VsZWN0KHN1YmplY3QsIHBlcmlvZCwgbXpfcnQsIHJlbF9hYnVuZF9sb2cyKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgdF90ZXN0KHJlbF9hYnVuZF9sb2cyIH4gcGVyaW9kLCAKICAgICAgICAgcGFpcmVkID0gVFJVRSwgCiAgICAgICAgIHAuYWRqdXN0Lm1ldGhvZCA9ICJCSCIpICU+JSAjIEJlbmphbWluaS1Ib2NoYmVyZyBjb250cm9sbGluZyB0byBsb3dlciBmYWxzZSBwb3NpdGl2ZXMKICBhZGRfc2lnbmlmaWNhbmNlKCkKYGBgCgpTdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGZlYXR1cmVzCgpgYGB7cn0KIyB3aGljaCBmZWF0dXJlcyBhcmUgc2lnbmlmaWNhbnQ/CmJldGFfdC50ZXN0X3BhaXJlZF9zaWcgPC0gYmV0YV90LnRlc3RfcGFpcmVkICU+JQogIGZpbHRlcihwIDwgMC4wNSkKa2FibGUoYmV0YV90LnRlc3RfcGFpcmVkX3NpZykKCiMgaG93IG1hbnkgYXJlIHNpZ25pZmljYW50Pwpucm93KGJldGFfdC50ZXN0X3BhaXJlZF9zaWcpCmBgYAoKIyMjIyMgUmVtb3ZlIEJHIGRpZXQKCmBgYHtyfQojIGxldCdzIGdyYWIgYm90aCBkYXRhc2V0cyBmb3IgZmVhdHVyZXMgc2lnIGluIHByZSB2IHBvc3QgYmV0YSBhbmQgcHJlIHYgcG9zdCBjb250cm9sIGFuZCBjb21iaW5lIHRoZW0KZnVsbGpvaW5fdC50ZXN0X2JldGFBTkRjdHJsIDwtIGZ1bGxfam9pbihiZXRhX3QudGVzdF9wYWlyZWRfc2lnLCBjdHJsX3QudGVzdF9wYWlyZWRfc2lnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gYygiLmJldGEiLCAiLmN0cmwiKSkKCiMgbnVtYmVyIG9mIGZlYXR1cmVzIGluIGNvbWJpbmVkIGxpc3QKbnJvdyhmdWxsam9pbl90LnRlc3RfYmV0YUFORGN0cmwpCgpgYGAKCkxldCdzIHRyeSBhbmQgcmVtb3ZlIGZlYXR1cmVzIHNpZ25pZmljYW50IGR1ZSB0byB0aGUgYmFja2dyb3VuZCBkaWV0CgpgYGB7cn0Kc2lnX3BhaXJlZF9iZXRhX3JtQkcgPC0gZnVsbGpvaW5fdC50ZXN0X2JldGFBTkRjdHJsICU+JQogICMgYWRkIGEgY29sdW1uIHRvIGFjY291bnQgZm9yIGRpcmVjdGlvbgogIG11dGF0ZShzaWduID0gc3RhdGlzdGljLmJldGEgKiBzdGF0aXN0aWMuY3RybCkgJT4lCiAgIyByZXBsYWNlIE5BcyBpbiB0aGUgc2lnbiBjb2x1bW4gd2l0aCAwCiAgbXV0YXRlKHNpZ24gPSByZXBsYWNlX25hKHNpZ24sIDApKSAlPiUKICAjIHJlcGxhY2UgTkFzIGluIHRoZSBzdGF0aXN0aWMuY3RybCBjb2x1bW4gdG8gMAogIG11dGF0ZShzdGF0aXN0aWMuY3RybCA9IHJlcGxhY2VfbmEoc3RhdGlzdGljLmN0cmwsIDApKSAlPiUKICAjIGZpbHRlciBmb3IgY29sdW1ucyB0aGF0IGFyZSBlaXRoZXIgbmVnYXRpdmUgKG1lYW5zIGN0cmwgYW5kIHRvbWF0byBhcmUgZ29pbmcgaW4gb3Bwb3NpdGUgZGlyKSBvciB3aGVyZSB0aGUgc3RhdC5jdHJsIGNvbCBpcyAwIChzbyB3ZSBkb24ndCByZW1vdmUgZmVhdHVyZXMgdGhhdCBhcmUganVzdCBub3QgcHJlc2VudCBpbiB0aGUgc2lnIGNvbnRyb2wgbGlzdCkKICBmaWx0ZXIoKHNpZ24gPCAwIHwgc3RhdGlzdGljLmN0cmwgPT0gMCkpCgojIG51bWJlciBvZiBmZWF0dXJlcyB3aXRob3V0IGJnIGRpZXQgZWZmZWN0Cm5yb3coc2lnX3BhaXJlZF9iZXRhX3JtQkcpCmBgYAoKSG93IG1hbnkgQkctZGlldC1yZWxhdGVkIGZlYXR1cmVzIGRpZCB3ZSByZW1vdmUgZnJvbSB0aGUgbGlzdCBvZiBzaWduaWZpY2FudCBiZXRhIGZlYXR1cmVzPwoKYGBge3J9Cm5yb3coYmV0YV90LnRlc3RfcGFpcmVkX3NpZykgLSBucm93KHNpZ19wYWlyZWRfYmV0YV9ybUJHKQpgYGAKCiMjIyMjIEFOT1ZBIG92ZXJsYXAKCktlZXAgc2lnIGZlYXR1cmVzIGluIHQtdGVzdCB0aGF0IGhhdmUgYSBtYXRjaCBpbiBzaWcgQU5PVkEuIExldCdzIHRha2Ugb3VyIG5ldyBmZWF0dXJlIGxpc3QgKGJhY2tncm91bmQgZGlldCBlZmZlY3QgcmVtb3ZlZCkKCmBgYHtyfQojIHNlbGVjdCBvbmx5IGZlYXR1cmVzIGZyb20gcGFpcmVkIGxpc3QgdGhhdCBoYXZlIGEgbWF0Y2ggaW4gQU5PVkEgbGlzdApiZXRhX3NpZ19BTk9WQV9vdmVybGFwX3BhaXJlZCA8LSBpbm5lcl9qb2luKHNpZ19wYWlyZWRfYmV0YV9ybUJHLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydF90dWtleUhTRF9zaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IGMoIi50LXRlc3QiLCAiLnR1a2V5cyIpKQoKIyBmZWF0dXJlcyBvdmVybGFwcGluZyB3aXRoIHNpZyBBTk9WQQp1bmlxdWUoYmV0YV9zaWdfQU5PVkFfb3ZlcmxhcF9wYWlyZWQkbXpfcnQpCmBgYAoKCiMjIyMgUGFpcmVkIHJlZAoKYGBge3J9CiMgcnVuIHBhaXJlZCB0LXRlc3RzIGZvciBjb250cm9sIGludGVydmVudGlvbgpyZWRfdC50ZXN0X3BhaXJlZCA8LSBkZl9mb3Jfc3RhdHMgJT4lCiAgZmlsdGVyKHRyZWF0bWVudCA9PSAicmVkIikgJT4lCiBkcGx5cjo6c2VsZWN0KHN1YmplY3QsIHBlcmlvZCwgbXpfcnQsIHJlbF9hYnVuZF9sb2cyKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgdF90ZXN0KHJlbF9hYnVuZF9sb2cyIH4gcGVyaW9kLCAKICAgICAgICAgcGFpcmVkID0gVFJVRSwgCiAgICAgICAgIHAuYWRqdXN0Lm1ldGhvZCA9ICJCSCIpICU+JSAjIEJlbmphbWluaS1Ib2NoYmVyZyBjb250cm9sbGluZyB0byBsb3dlciBmYWxzZSBwb3NpdGl2ZXMKICBhZGRfc2lnbmlmaWNhbmNlKCkKYGBgCgpTdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGZlYXR1cmVzCgpgYGB7cn0KIyB3aGljaCBmZWF0dXJlcyBhcmUgc2lnbmlmaWNhbnQ/CnJlZF90LnRlc3RfcGFpcmVkX3NpZyA8LSByZWRfdC50ZXN0X3BhaXJlZCAlPiUKICBmaWx0ZXIocCA8IDAuMDUpCmthYmxlKHJlZF90LnRlc3RfcGFpcmVkX3NpZykKCiMgaG93IG1hbnkgYXJlIHNpZ25pZmljYW50Pwpucm93KHJlZF90LnRlc3RfcGFpcmVkX3NpZykKYGBgCgojIyMjIyBSZW1vdmUgQkcgZGlldAoKYGBge3J9CiMgbGV0J3MgZ3JhYiBib3RoIGRhdGFzZXRzIGZvciBmZWF0dXJlcyBzaWcgaW4gcHJlIHYgcG9zdCByZWQgYW5kIHByZSB2IHBvc3QgY29udHJvbCBhbmQgY29tYmluZSB0aGVtCmZ1bGxqb2luX3QudGVzdF9yZWRBTkRjdHJsIDwtIGZ1bGxfam9pbihyZWRfdC50ZXN0X3BhaXJlZF9zaWcsIGN0cmxfdC50ZXN0X3BhaXJlZF9zaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9ICJtel9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBjKCIucmVkIiwgIi5jdHJsIikpCgojIG51bWJlciBvZiBmZWF0dXJlcyBpbiBjb21iaW5lZCBsaXN0Cm5yb3coZnVsbGpvaW5fdC50ZXN0X3JlZEFORGN0cmwpCgpgYGAKCkxldCdzIHRyeSBhbmQgcmVtb3ZlIGZlYXR1cmVzIHNpZ25pZmljYW50IGR1ZSB0byB0aGUgYmFja2dyb3VuZCBkaWV0CgpgYGB7cn0Kc2lnX3BhaXJlZF9yZWRfcm1CRyA8LSBmdWxsam9pbl90LnRlc3RfcmVkQU5EY3RybCAlPiUKICAjIGFkZCBhIGNvbHVtbiB0byBhY2NvdW50IGZvciBkaXJlY3Rpb24KICBtdXRhdGUoc2lnbiA9IHN0YXRpc3RpYy5yZWQgKiBzdGF0aXN0aWMuY3RybCkgJT4lCiAgIyByZXBsYWNlIE5BcyBpbiB0aGUgc2lnbiBjb2x1bW4gd2l0aCAwCiAgbXV0YXRlKHNpZ24gPSByZXBsYWNlX25hKHNpZ24sIDApKSAlPiUKICAjIHJlcGxhY2UgTkFzIGluIHRoZSBzdGF0aXN0aWMuY3RybCBjb2x1bW4gdG8gMAogIG11dGF0ZShzdGF0aXN0aWMuY3RybCA9IHJlcGxhY2VfbmEoc3RhdGlzdGljLmN0cmwsIDApKSAlPiUKICAjIGZpbHRlciBmb3IgY29sdW1ucyB0aGF0IGFyZSBlaXRoZXIgbmVnYXRpdmUgKG1lYW5zIGN0cmwgYW5kIHRvbWF0byBhcmUgZ29pbmcgaW4gb3Bwb3NpdGUgZGlyKSBvciB3aGVyZSB0aGUgc3RhdC5jdHJsIGNvbCBpcyAwIChzbyB3ZSBkb24ndCByZW1vdmUgZmVhdHVyZXMgdGhhdCBhcmUganVzdCBub3QgcHJlc2VudCBpbiB0aGUgc2lnIGNvbnRyb2wgbGlzdCkKICBmaWx0ZXIoKHNpZ24gPCAwIHwgc3RhdGlzdGljLmN0cmwgPT0gMCkpCgojIG51bWJlciBvZiBmZWF0dXJlcyB3aXRob3V0IGJnIGRpZXQgZWZmZWN0Cm5yb3coc2lnX3BhaXJlZF9yZWRfcm1CRykKYGBgCgpIb3cgbWFueSBCRy1kaWV0LXJlbGF0ZWQgZmVhdHVyZXMgZGlkIHdlIHJlbW92ZSBmcm9tIHRoZSBsaXN0IG9mIHNpZ25pZmljYW50IGJldGEgZmVhdHVyZXM/CgpgYGB7cn0KbnJvdyhyZWRfdC50ZXN0X3BhaXJlZF9zaWcpIC0gbnJvdyhzaWdfcGFpcmVkX3JlZF9ybUJHKQpgYGAKCiMjIyMjIEFOT1ZBIG92ZXJsYXAKCktlZXAgc2lnIGZlYXR1cmVzIGluIHQtdGVzdCB0aGF0IGhhdmUgYSBtYXRjaCBpbiBzaWcgQU5PVkEuIExldCdzIHRha2Ugb3VyIG5ldyBmZWF0dXJlIGxpc3QgKGJhY2tncm91bmQgZGlldCBlZmZlY3QgcmVtb3ZlZCkKCmBgYHtyfQojIHNlbGVjdCBvbmx5IGZlYXR1cmVzIGZyb20gcGFpcmVkIGxpc3QgdGhhdCBoYXZlIGEgbWF0Y2ggaW4gQU5PVkEgbGlzdApyZWRfc2lnX0FOT1ZBX292ZXJsYXBfcGFpcmVkIDwtIGlubmVyX2pvaW4oc2lnX3BhaXJlZF9yZWRfcm1CRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnRfdHVrZXlIU0Rfc2lnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gIm16X3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBjKCIudC10ZXN0IiwgIi50dWtleXMiKSkKCiMgZmVhdHVyZXMgb3ZlcmxhcHBpbmcgd2l0aCBzaWcgQU5PVkEKdW5pcXVlKHJlZF9zaWdfQU5PVkFfb3ZlcmxhcF9wYWlyZWQkbXpfcnQpCmBgYAoKIyMjIyBQYWlyZWQgdG9tYXRvCgpgYGB7cn0KIyBydW4gcGFpcmVkIHQtdGVzdHMgZm9yIGNvbnRyb2wgaW50ZXJ2ZW50aW9uCnRvbWF0b190LnRlc3RfcGFpcmVkIDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIodG9tYXRvX29yX2NvbnRyb2wgPT0gInRvbWF0byIpICU+JQogZHBseXI6OnNlbGVjdChzdWJqZWN0LCBwZXJpb2QsIG16X3J0LCByZWxfYWJ1bmRfbG9nMikgJT4lCiAgZ3JvdXBfYnkobXpfcnQpICU+JQogIHRfdGVzdChyZWxfYWJ1bmRfbG9nMiB+IHBlcmlvZCwgCiAgICAgICAgIHBhaXJlZCA9IFRSVUUsIAogICAgICAgICBwLmFkanVzdC5tZXRob2QgPSAiQkgiKSAlPiUgIyBCZW5qYW1pbmktSG9jaGJlcmcgY29udHJvbGxpbmcgdG8gbG93ZXIgZmFsc2UgcG9zaXRpdmVzCiAgYWRkX3NpZ25pZmljYW5jZSgpCmBgYAoKU3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBmZWF0dXJlcwoKYGBge3J9CiMgd2hpY2ggZmVhdHVyZXMgYXJlIHNpZ25pZmljYW50Pwp0b21hdG9fdC50ZXN0X3BhaXJlZF9zaWcgPC0gdG9tYXRvX3QudGVzdF9wYWlyZWQgJT4lCiAgZmlsdGVyKHAgPCAwLjA1KQprYWJsZSh0b21hdG9fdC50ZXN0X3BhaXJlZF9zaWcpCgojIGhvdyBtYW55IGFyZSBzaWduaWZpY2FudD8KbnJvdyh0b21hdG9fdC50ZXN0X3BhaXJlZF9zaWcpCmBgYAoKIyMjIyMgUmVtb3ZlIEJHIGRpZXQKCmBgYHtyfQojIGxldCdzIGdyYWIgYm90aCBkYXRhc2V0cyBmb3IgZmVhdHVyZXMgc2lnIGluIHByZSB2IHBvc3QgcmVkIGFuZCBwcmUgdiBwb3N0IGNvbnRyb2wgYW5kIGNvbWJpbmUgdGhlbQpmdWxsam9pbl90LnRlc3RfdG9tQU5EY3RybCA8LSBmdWxsX2pvaW4odG9tYXRvX3QudGVzdF9wYWlyZWRfc2lnLCBjdHJsX3QudGVzdF9wYWlyZWRfc2lnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gYygiLnRvbSIsICIuY3RybCIpKQoKIyBudW1iZXIgZmVhdHVyZXMgaW4gZnVsbCBsaXN0Cm5yb3coZnVsbGpvaW5fdC50ZXN0X3RvbUFORGN0cmwpCgpgYGAKCkxldCdzIHRyeSBhbmQgcmVtb3ZlIGZlYXR1cmVzIHNpZ25pZmljYW50IGR1ZSB0byB0aGUgYmFja2dyb3VuZCBkaWV0CgpgYGB7cn0Kc2lnX3BhaXJlZF90b21fcm1CRyA8LSBmdWxsam9pbl90LnRlc3RfdG9tQU5EY3RybCAlPiUKICAjIGFkZCBhIGNvbHVtbiB0byBhY2NvdW50IGZvciBkaXJlY3Rpb24KICBtdXRhdGUoc2lnbiA9IHN0YXRpc3RpYy50b20gKiBzdGF0aXN0aWMuY3RybCkgJT4lCiAgIyByZXBsYWNlIE5BcyBpbiB0aGUgc2lnbiBjb2x1bW4gd2l0aCAwCiAgbXV0YXRlKHNpZ24gPSByZXBsYWNlX25hKHNpZ24sIDApKSAlPiUKICAjIHJlcGxhY2UgTkFzIGluIHRoZSBzdGF0aXN0aWMuY3RybCBjb2x1bW4gdG8gMAogIG11dGF0ZShzdGF0aXN0aWMuY3RybCA9IHJlcGxhY2VfbmEoc3RhdGlzdGljLmN0cmwsIDApKSAlPiUKICAjIGZpbHRlciBmb3IgY29sdW1ucyB0aGF0IGFyZSBlaXRoZXIgbmVnYXRpdmUgKG1lYW5zIGN0cmwgYW5kIHRvbWF0byBhcmUgZ29pbmcgaW4gb3Bwb3NpdGUgZGlyKSBvciB3aGVyZSB0aGUgc3RhdC5jdHJsIGNvbCBpcyAwIChzbyB3ZSBkb24ndCByZW1vdmUgZmVhdHVyZXMgdGhhdCBhcmUganVzdCBub3QgcHJlc2VudCBpbiB0aGUgc2lnIGNvbnRyb2wgbGlzdCkKICBmaWx0ZXIoKHNpZ24gPCAwIHwgc3RhdGlzdGljLmN0cmwgPT0gMCkpCgojIG51bWJlciBvZiBmZWF0dXJlcyBpbiBuZXcgbGlzdCB3aXRob3V0IGJnIGRpZXQgZWZmZWN0Cm5yb3coc2lnX3BhaXJlZF90b21fcm1CRykKYGBgCgpIb3cgbWFueSBCRy1kaWV0LXJlbGF0ZWQgZmVhdHVyZXMgZGlkIHdlIHJlbW92ZSBmcm9tIHRoZSBsaXN0IG9mIHNpZ25pZmljYW50IGJldGEgZmVhdHVyZXM/CgpgYGB7cn0KbnJvdyh0b21hdG9fdC50ZXN0X3BhaXJlZF9zaWcpIC0gbnJvdyhzaWdfcGFpcmVkX3RvbV9ybUJHKQpgYGAKCiMjIyMjIEFOT1ZBIG92ZXJsYXAKCktlZXAgc2lnIGZlYXR1cmVzIGluIHQtdGVzdCB0aGF0IGhhdmUgYSBtYXRjaCBpbiBzaWcgQU5PVkEuIExldCdzIHRha2Ugb3VyIG5ldyBmZWF0dXJlIGxpc3QgKGJhY2tncm91bmQgZGlldCBlZmZlY3QgcmVtb3ZlZCkKCmBgYHtyfQojIHNlbGVjdCBvbmx5IGZlYXR1cmVzIGZyb20gcGFpcmVkIGxpc3QgdGhhdCBoYXZlIGEgbWF0Y2ggaW4gQU5PVkEgbGlzdAp0b21fc2lnX0FOT1ZBX292ZXJsYXBfcGFpcmVkIDwtIGlubmVyX2pvaW4oc2lnX3BhaXJlZF90b21fcm1CRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnRfdHVrZXlIU0Rfc2lnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gIm16X3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBjKCIudC10ZXN0IiwgIi50dWtleXMiKSkKCiMgZmVhdHVyZXMgb3ZlcmxhcHBpbmcgd2l0aCBzaWcgQU5PVkEKdW5pcXVlKHRvbV9zaWdfQU5PVkFfb3ZlcmxhcF9wYWlyZWQkbXpfcnQpCmBgYAoKCkhlcmUsIEkgd2lsbCBjb21wYXJlIGNvbnRyb2wgdG8gZWFjaCB0b21hdG8gdHJlYXRtZW50IGluZGl2aWR1YWxseSwgYW5kIHRoZW4gdG9tYXRvIHRyZWF0bWVudHMgYWdhaW5zdCBlYWNoIG90aGVyLiBJIHdpbGwgYWxzbyBjb21wYXJlIHRvbWF0byB0byBjb250cm9sLiBJIGFtIHVzaW5nIHRoZSBsb2cgdHJhbnNmb3JtZWQgdmFsdWVzIG9mIHJlbCBhYnVuZGFuY2Ugc2luY2UgcGFyYW1ldHJpYyB0ZXN0cyBhc3N1bWUgbm9ybWFsaXR5LgoKIyMjIyBSZWQgdiBjdHJsCgpgYGB7ciwgcmVkIHYgY3RybH0KIyBydW4gdC10ZXN0CnJlZF92X2N0cmxfdC50ZXN0IDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIodHJlYXRtZW50ICVpbiUgYygiY29udHJvbCIsICJyZWQiKSkgJT4lCiAgZmlsdGVyKHBlcmlvZCA9PSAiYjMiKSAlPiUKICBkcGx5cjo6c2VsZWN0KHN1YmplY3QsIHRyZWF0bWVudCwgbXpfcnQsIHJlbF9hYnVuZF9sb2cyKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgdF90ZXN0KHJlbF9hYnVuZF9sb2cyIH4gdHJlYXRtZW50LCAKICAgICAgICAgcGFpcmVkID0gRkFMU0UsIAogICAgICAgICBwLmFkanVzdC5tZXRob2QgPSAiQkgiKSAlPiUgIyBCZW5qYW1pbmktSG9jaGJlcmcgY29udHJvbGxpbmcgdG8gbG93ZXIgZmFsc2UgcG9zaXRpdmVzCiAgYWRkX3NpZ25pZmljYW5jZSgpCmBgYAoKU3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBmZWF0dXJlcwoKYGBge3J9CiMgd2hpY2ggZmVhdHVyZXMgYXJlIHNpZ25pZmljYW50PwpzaWdfcmVkX3ZfY3RybF90LnRlc3QgPC0gcmVkX3ZfY3RybF90LnRlc3QgJT4lCiAgZmlsdGVyKHAgPCAwLjA1KQprYWJsZShzaWdfcmVkX3ZfY3RybF90LnRlc3QpCgojIGhvdyBtYW55IGFyZSBzaWduaWZpY2FudD8KbnJvdyhzaWdfcmVkX3ZfY3RybF90LnRlc3QpCmBgYAoKIyMjIyMgQU5PVkEgb3ZlcmxhcAoKS2VlcCBzaWcgZmVhdHVyZXMgaW4gdW5wYWlyZWQgdC10ZXN0IHRoYXQgaGF2ZSBhIG1hdGNoIGluIHNpZyBBTk9WQQoKYGBge3J9CnNpZ19vdmVybGFwX2N0cmxfcmVkIDwtIGlubmVyX2pvaW4oc2lnX3JlZF92X2N0cmxfdC50ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydF90dWtleUhTRF9zaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IGMoIi50LXRlc3QiLCAiLnR1a2V5cyIpKQoKdW5pcXVlKHNpZ19vdmVybGFwX2N0cmxfcmVkJG16X3J0KQpgYGAKCgoKIyMjIyBCZXRhIHYgY3RybAoKYGBge3IsIGJldGEgdiBjdHJsIHQtdGVzdCB3aXRoIG91dGxpZXJ9CiMgcnVuIHQtdGVzdHMKYmV0YV92X2N0cmxfdC50ZXN0IDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIodHJlYXRtZW50ICVpbiUgYygiY29udHJvbCIgLCAiYmV0YSIpLAogICAgICAgICBwZXJpb2QgPT0gImIzIikgJT4lCiAgZHBseXI6OnNlbGVjdChzdWJqZWN0LCB0cmVhdG1lbnQsIG16X3J0LCByZWxfYWJ1bmRfbG9nMikgJT4lCiAgZ3JvdXBfYnkobXpfcnQpICU+JQogIHRfdGVzdChyZWxfYWJ1bmRfbG9nMiB+IHRyZWF0bWVudCwgCiAgICAgICAgIHBhaXJlZCA9IEZBTFNFLCAKICAgICAgICAgcC5hZGp1c3QubWV0aG9kID0gIkJIIikgJT4lICMgQmVuamFtaW5pLUhvY2hiZXJnIGNvbnRyb2xsaW5nIHRvIGxvd2VyIGZhbHNlIHBvc2l0aXZlcwogIGFkZF9zaWduaWZpY2FuY2UoKQpgYGAKClN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZmVhdHVyZXMKCmBgYHtyfQojIHdoaWNoIGZlYXR1cmVzIGFyZSBzaWduaWZpY2FudD8Kc2lnX2JldGFfdl9jdHJsX3QudGVzdCA8LSBiZXRhX3ZfY3RybF90LnRlc3QgJT4lCiAgZmlsdGVyKHAgPCAwLjA1KQprYWJsZShzaWdfYmV0YV92X2N0cmxfdC50ZXN0KQoKIyBob3cgbWFueSBhcmUgc2lnbmlmaWNhbnQ/Cm5yb3coc2lnX2JldGFfdl9jdHJsX3QudGVzdCkKYGBgCgojIyMjIyBBTk9WQSBvdmVybGFwCgpLZWVwIHNpZyBmZWF0dXJlcyBpbiB0LXRlc3QgdGhhdCBoYXZlIGEgbWF0Y2ggaW4gc2lnIEFOT1ZBCgpgYGB7cn0Kc2lnX292ZXJsYXBfY3RybF9iZXRhIDwtIGlubmVyX2pvaW4oc2lnX2JldGFfdl9jdHJsX3QudGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnRfdHVrZXlIU0Rfc2lnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gIm16X3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBjKCIudC10ZXN0IiwgIi50dWtleXMiKSkKCiMgd2hpY2ggZmVhdHVyZXMgb3ZlcmxhcD8KdW5pcXVlKHNpZ19vdmVybGFwX2N0cmxfYmV0YSRtel9ydCkKYGBgCgojIyMjIEJldGEgdiByZWQKCmBgYHtyLCBiZXRhIHYgcmVkIHQgdGVzdH0KIyBydW4gdC10ZXN0cwpiZXRhX3ZfcmVkX3QudGVzdCA8LSBkZl9mb3Jfc3RhdHMgJT4lCiAgZmlsdGVyKHRyZWF0bWVudCAlaW4lIGMoImJldGEiLCAicmVkIiksCiAgICAgICAgIHBlcmlvZCA9PSAiYjMiKSAlPiUKICBkcGx5cjo6c2VsZWN0KHN1YmplY3QsIHRyZWF0bWVudCwgbXpfcnQsIHJlbF9hYnVuZF9sb2cyKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgdF90ZXN0KHJlbF9hYnVuZF9sb2cyIH4gdHJlYXRtZW50LCAKICAgICAgICAgcGFpcmVkID0gRkFMU0UsIAogICAgICAgICBwLmFkanVzdC5tZXRob2QgPSAiQkgiKSAlPiUgIyBCZW5qYW1pbmktSG9jaGJlcmcgY29udHJvbGxpbmcgdG8gbG93ZXIgZmFsc2UgcG9zaXRpdmVzCiAgYWRkX3NpZ25pZmljYW5jZSgpCmBgYAoKU3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBmZWF0dXJlcwoKYGBge3J9CiMgd2hpY2ggZmVhdHVyZXMgYXJlIHNpZ25pZmljYW50PwpzaWdfYmV0YV92X3JlZF90LnRlc3QgPC0gYmV0YV92X3JlZF90LnRlc3QgJT4lCiAgZmlsdGVyKHAgPCAwLjA1KQprYWJsZShzaWdfYmV0YV92X3JlZF90LnRlc3QpCgojIGhvdyBtYW55IGFyZSBzaWduaWZpY2FudD8KbnJvdyhzaWdfYmV0YV92X3JlZF90LnRlc3QpCmBgYAoKIyMjIyMgQU5PVkEgb3ZlcmxhcAoKS2VlcCBzaWcgZmVhdHVyZXMgaW4gdC10ZXN0IHRoYXQgaGF2ZSBhIG1hdGNoIGluIHNpZyBBTk9WQQoKYGBge3J9CnNpZ19vdmVybGFwX2JldGFfcmVkIDwtIGlubmVyX2pvaW4oc2lnX2JldGFfdl9yZWRfdC50ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydF90dWtleUhTRF9zaWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IGMoIi50LXRlc3QiLCAiLnR1a2V5cyIpKQoKIyB3aGljaCBmZWF0dXJlcyBvdmVybGFwPwp1bmlxdWUoc2lnX292ZXJsYXBfYmV0YV9yZWQkbXpfcnQpCmBgYAoKCiMjIyMgVG9tYXRvIHYgY3RybAoKYGBge3IsIHRvbWF0byB2IGNvbnRyb2wgdC10ZXN0fQojIHJ1biB0LXRlc3RzCnRvbV92X2N0cmxfdC50ZXN0IDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIodG9tYXRvX29yX2NvbnRyb2wgJWluJSBjKCJjb250cm9sIiwgInRvbWF0byIpLAogICAgICAgICBwZXJpb2QgPT0gImIzIikgJT4lCiAgZHBseXI6OnNlbGVjdChzdWJqZWN0LCB0b21hdG9fb3JfY29udHJvbCwgbXpfcnQsIHJlbF9hYnVuZF9sb2cyKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgdF90ZXN0KHJlbF9hYnVuZF9sb2cyIH4gdG9tYXRvX29yX2NvbnRyb2wsIAogICAgICAgICBwYWlyZWQgPSBGQUxTRSwgCiAgICAgICAgIHAuYWRqdXN0Lm1ldGhvZCA9ICJCSCIpICU+JSAjIEJlbmphbWluaS1Ib2NoYmVyZyBjb250cm9sbGluZyB0byBsb3dlciBmYWxzZSBwb3NpdGl2ZXMKICBhZGRfc2lnbmlmaWNhbmNlKCkKYGBgCgpTdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGZlYXR1cmVzCgpgYGB7cn0KIyB3aGljaCBmZWF0dXJlcyBhcmUgc2lnbmlmaWNhbnQ/CnNpZ190b21fdl9jdHJsX3QudGVzdCA8LSB0b21fdl9jdHJsX3QudGVzdCAlPiUKICBmaWx0ZXIocCA8IDAuMDUpCmthYmxlKHNpZ190b21fdl9jdHJsX3QudGVzdCkKCiMgaG93IG1hbnkgYXJlIHNpZ25pZmljYW50Pwpucm93KHNpZ190b21fdl9jdHJsX3QudGVzdCkKYGBgCgojIyMjIyBBTk9WQSBvdmVybGFwCgpLZWVwIHNpZyBmZWF0dXJlcyBpbiB0LXRlc3QgdGhhdCBoYXZlIGEgbWF0Y2ggaW4gc2lnIEFOT1ZBCgpgYGB7cn0Kc2lnX292ZXJsYXBfdG9tX2N0cmwgPC0gaW5uZXJfam9pbihzaWdfdG9tX3ZfY3RybF90LnRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ0X3R1a2V5SFNEX3NpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9ICJtel9ydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gYygiLnQtdGVzdCIsICIudHVrZXlzIikpCgojIHdoaWNoIGZlYXR1cmVzIG92ZXJsYXA/CnVuaXF1ZShzaWdfb3ZlcmxhcF90b21fY3RybCRtel9ydCkKYGBgCgojIyMgSGVhdG1hcHMKCiMjIyMgQU5PVkEKCmBgYHtyfQojIGdvIGJhY2sgdG8gd2lkZSBmb3Igc3RhdHMgZGYKZGZfZm9yX3N0YXRzX3dpZGUgPC0gZGZfZm9yX3N0YXRzICU+JQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBtel9ydCwKICAgICAgICAgICAgICB2YWx1ZXNfZnJvbSA9IHJlbF9hYnVuZF9sb2cyKQoKQU5PVkFfdHJ0cGVyaW9kX2hlYXRtYXBfZGF0YSA8LSBkZl9mb3Jfc3RhdHNfd2lkZSAlPiUKICBmaWx0ZXIocGVyaW9kID09ICJiMyIpICU+JQogIGRwbHlyOjpzZWxlY3Qoc2FtcGxlLCAKICAgICAgICAgICAgICAgIGFsbF9vZih0cnRfYW5vdmFfc2lnJG16X3J0KSkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzYW1wbGUiKQoKaGVhZChBTk9WQV90cnRwZXJpb2RfaGVhdG1hcF9kYXRhLCBuPTMpCiAgCmBgYAoKYGBge3J9CiMgcHVsbCBtZXRhZGF0YQptZXRhZGF0YV9IZWF0bWFwIDwtIG1ldGFkYXRhCgojIGNoYW5nZSB0cmVhdG1lbnQgdG8gZmFjdG9yCm1ldGFkYXRhX0hlYXRtYXAkdHJlYXRtZW50IDwtIGFzLmZhY3RvcihtZXRhZGF0YV9IZWF0bWFwJHRyZWF0bWVudCkKCiMgbWFrZSBpdCBzbyB0aGF0IHJvd25hbWVzIGluIG1ldGFkYXRhIG1hdGNoIHJvd25hbWVzIGZyb20gaGVhdG1hcCBkZgpyb3duYW1lcyhtZXRhZGF0YV9IZWF0bWFwKSA8LSByb3duYW1lcyhBTk9WQV90cnRwZXJpb2RfaGVhdG1hcF9kYXRhKQoKIyBjcmVhdGUgYW5ub3RhdGlvbiByb3dzIGZvciB0cmVhdG1lbnQgYW5kIHdyYW5nbGUKIyBzZWxlY3Qgcm93bmFtZXMgKHNhbXBsZXMpIGZyb20gaGVhdG1hcCBtZXRhZGF0YSAoYWxzbyBlbnN1cmVzIHRoZSBvcmRlciBpcyBjb3JyZWN0KQphbm5vX3RydF9yb3cgPC0gYXMuZGF0YS5mcmFtZShyb3duYW1lcyhtZXRhZGF0YV9IZWF0bWFwKSkKCiMgcHVsbCB0cnQgY29sdW1uCmFubm9fdHJ0X3JvdyR0cmVhdG1lbnQgPC0gbWV0YWRhdGFfSGVhdG1hcCR0cmVhdG1lbnQKYW5ub190cnRfcm93JHNleCA8LSBtZXRhZGF0YV9IZWF0bWFwJHNleAoKIyBzZWxlY3QgdHJ0CmFubm9fdHJ0X3JvdyA8LSBhbm5vX3RydF9yb3cgJT4lCiAgZHBseXI6OnNlbGVjdCh0cmVhdG1lbnQsIHNleCkKCiMgZ2V0IHJvd25hbWVzIHRvIG1hdGNoIGhlYXRtYXAgYWdhaW4Kcm93bmFtZXMoYW5ub190cnRfcm93KSA8LSByb3duYW1lcyhtZXRhZGF0YV9IZWF0bWFwKQpgYGAKCmBgYHtyfQojIGNyZWF0ZSBhbm5vdGF0aW9uIGNvbG9ycwphbm5vdGF0aW9uX2NvbG9ycyA8LSBsaXN0KHRyZWF0bWVudCA9IGMoImJldGEiID0gIm9yYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29udHJvbCIgPSAiZ3JlZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZCIgPSAidG9tYXRvIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V4ID0gYygiTSIgPSAiYnVybHl3b29kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGIiA9ICJwaW5rIikpCmBgYAoKYGBge3IsIGZpZy5oZWlnaHQ9MTIsIGZpZy53aWR0aD0xMH0KcGhlYXRtYXAodChBTk9WQV90cnRwZXJpb2RfaGVhdG1hcF9kYXRhKSwKICAgICAgICAgICBzY2FsZSA9ICJyb3ciLAogICAgICAgICAgIGNsdXN0ZXJfcm93cyA9IFRSVUUsCiAgICAgICAgICAgYW5ub3RhdGlvbl9jb2wgPSBhbm5vX3RydF9yb3csCiAgICAgICAgICAgYW5ub3RhdGlvbl9jb2xvcnMgPSBhbm5vdGF0aW9uX2NvbG9ycywKICAgICAgICAgICBjbHVzdGVyX2NvbHMgPSBUUlVFLAogICAgICAgICAgIHNob3dfY29sbmFtZXMgPSBUUlVFLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2Vfcm93cyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2VfY29scyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGN1dHJlZV9yb3dzID0gOCwKICAgICAgICAgICBjdXRyZWVfY29scyA9IDMsCiAgICAgICAgICAgY2x1c3RlcmluZ19tZXRob2QgPSAid2FyZC5EMiIsCiAgICAgICAgICAgY29sb3IgPSBjb2xvclJhbXBQYWxldHRlKGMoIiM2N2E5Y2YiLCAiI2Y3ZjdmNyIsICIjZWY4YTYyIikpKDE2KSwKICAgICAgICAgICBtYWluID0gIkhlYXRtYXAgb2YgZmVhdHVyZXMgc2lnbmlmaWNhbnQgaW4gQU5PVkEgYWNyb3NzIGFsbCB0cmVhdG1lbnQgZ3JvdXBzIFxuYnkgQmVuamFtb25pLUhvY2hiZXJnIGNvcnJlY3RlZCBcbnAtdmFsdWVzID4gMC4wNSBcbkxpcGlkb21pY3MgQzE4ICgrKSBcblNob3dpbmcgb25seSBwb3N0LWludGVydmVudGlvbiB0aW1lcG9pbnRzIikgCgpgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PTEyLCBmaWcud2lkdGg9MTB9CiMgV2l0aG91dCBoaWVyYXJjaGljYWwgY2x1c3RlcmluZyBvZiBzYW1wbGVzIChjb2xzKQpwaGVhdG1hcCh0KEFOT1ZBX3RydHBlcmlvZF9oZWF0bWFwX2RhdGEpLAogICAgICAgICAgIHNjYWxlID0gInJvdyIsCiAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gVFJVRSwKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbCA9IGFubm9fdHJ0X3JvdywKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbG9ycyA9IGFubm90YXRpb25fY29sb3JzLAogICAgICAgICAgIGNsdXN0ZXJfY29scyA9IEZBTFNFLAogICAgICAgICAgIHNob3dfY29sbmFtZXMgPSBUUlVFLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2Vfcm93cyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2VfY29scyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGN1dHJlZV9yb3dzID0gOCwKICAgICAgICAgICBjdXRyZWVfY29scyA9IDMsCiAgICAgICAgICAgY2x1c3RlcmluZ19tZXRob2QgPSAid2FyZC5EMiIsCiAgICAgICAgICAgY29sb3IgPSBjb2xvclJhbXBQYWxldHRlKGMoIiM2N2E5Y2YiLCAiI2Y3ZjdmNyIsICIjZWY4YTYyIikpKDE2KSwKICAgICAgICAgICBtYWluID0gIkhlYXRtYXAgb2YgZmVhdHVyZXMgc2lnbmlmaWNhbnQgaW4gQU5PVkEgYWNyb3NzIHRyZWF0bWVudCBncm91cHMgXG5ieSBCZW5qYW1vbmktSG9jaGJlcmcgY29ycmVjdGVkIFxucC12YWx1ZXMgPiAwLjA1IFxuTGlwaWRvbWljcyBDMTggKCspIFxuU2hvd2luZyBvbmx5IHBvc3QtaW50ZXJ2ZW50aW9uIHRpbWVwb2ludHMiKSAKCmBgYAoKIyMjIyBVbnBhaXJlZAoKYGBge3J9Cgp1bnBhaXJlZF90LnRlc3RzX2hlYXRtYXBfZGF0YSA8LSBkZl9mb3Jfc3RhdHNfd2lkZSAlPiUKICBmaWx0ZXIocGVyaW9kID09ICJiMyIpICU+JQogIGRwbHlyOjpzZWxlY3Qoc2FtcGxlLCAKICAgICAgICAgICAgICAgIGFsbF9vZihzaWdfb3ZlcmxhcF9jdHJsX2JldGEkbXpfcnQpLAogICAgICAgICAgICAgICAgYWxsX29mKHNpZ19vdmVybGFwX2N0cmxfcmVkJG16X3J0KSwKICAgICAgICAgICAgICAgIGFsbF9vZihzaWdfb3ZlcmxhcF90b21fY3RybCRtel9ydCksCiAgICAgICAgICAgICAgICBhbGxfb2Yoc2lnX292ZXJsYXBfYmV0YV9yZWQkbXpfcnQpKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInNhbXBsZSIpCgpoZWFkKHVucGFpcmVkX3QudGVzdHNfaGVhdG1hcF9kYXRhLG4gPSAzKQogIApgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PTIwLCBmaWcud2lkdGg9MTV9CnBoZWF0bWFwKHQodW5wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEpLAogICAgICAgICAgIHNjYWxlID0gInJvdyIsCiAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gVFJVRSwKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbCA9IGFubm9fdHJ0X3JvdywKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbG9ycyA9IGFubm90YXRpb25fY29sb3JzLAogICAgICAgICAgIGNsdXN0ZXJfY29scyA9IFRSVUUsCiAgICAgICAgICAgc2hvd19jb2xuYW1lcyA9IFRSVUUsCiAgICAgICAgICAgY2x1c3RlcmluZ19kaXN0YW5jZV9yb3dzID0gImV1Y2xpZGVhbiIsCiAgICAgICAgICAgY2x1c3RlcmluZ19kaXN0YW5jZV9jb2xzID0gImV1Y2xpZGVhbiIsCiAgICAgICAgIGN1dHJlZV9yb3dzID0gOCwKICAgICAgICAgY3V0cmVlX2NvbHMgPSAzLAogICAgICAgICAgIGNsdXN0ZXJpbmdfbWV0aG9kID0gIndhcmQuRDIiLAogICAgICAgICAgIGNvbG9yID0gY29sb3JSYW1wUGFsZXR0ZShjKCIjNjdhOWNmIiwgIiNmN2Y3ZjciLCAiI2VmOGE2MiIpKSgxNiksCiAgICAgICAgICAgbWFpbiA9ICJIZWF0bWFwIG9mIGZlYXR1cmVzIHNpZ25pZmljYW50IGluIGFsbCB1bnBhaXJlZCB0LXRlc3QgY29tcGFyaXNvbnMgdGhhdCBvdmVybGFwIHdpdGggc2lnIEFOT1ZBIGZlYXR1cmVzIGFjcm9zcyBhbGwgdHJlYXRtZW50IGdyb3VwcyBcbmJ5IEJlbmphbW9uaS1Ib2NoYmVyZyBjb3JyZWN0ZWQgXG5wLXZhbHVlcyA+IDAuMDUgXG5MaXBpZG9taWNzIEMxOCAoKykiKQoKYGBgCgpgYGB7ciwgZmlnLmhlaWdodD0yMCwgZmlnLndpZHRoPTE1fQojIHdpdGhvdXQgY2x1c3RlcmluZyBvZiBjb2xzCnBoZWF0bWFwKHQodW5wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEpLAogICAgICAgICAgIHNjYWxlID0gInJvdyIsCiAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gVFJVRSwKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbCA9IGFubm9fdHJ0X3JvdywKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbG9ycyA9IGFubm90YXRpb25fY29sb3JzLAogICAgICAgICAgIGNsdXN0ZXJfY29scyA9IEZBTFNFLAogICAgICAgICAgIHNob3dfY29sbmFtZXMgPSBUUlVFLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2Vfcm93cyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2VfY29scyA9ICJldWNsaWRlYW4iLAogICAgICAgICBjdXRyZWVfcm93cyA9IDgsCiAgICAgICAgIGN1dHJlZV9jb2xzID0gMywKICAgICAgICAgICBjbHVzdGVyaW5nX21ldGhvZCA9ICJ3YXJkLkQyIiwKICAgICAgICAgICBjb2xvciA9IGNvbG9yUmFtcFBhbGV0dGUoYygiIzY3YTljZiIsICIjZjdmN2Y3IiwgIiNlZjhhNjIiKSkoMTYpLAogICAgICAgICAgIG1haW4gPSAiSGVhdG1hcCBvZiBmZWF0dXJlcyBzaWduaWZpY2FudCBpbiBhbGwgdW5wYWlyZWQgdC10ZXN0IGNvbXBhcmlzb25zIHRoYXQgb3ZlcmxhcCB3aXRoIHNpZyBBTk9WQSBmZWF0dXJlcyBhY3Jvc3MgYWxsIHRyZWF0bWVudCBncm91cHMgXG5ieSBCZW5qYW1vbmktSG9jaGJlcmcgY29ycmVjdGVkIFxucC12YWx1ZXMgPiAwLjA1IFxuTGlwaWRvbWljcyBDMTggKCspIikKCmBgYAoKIyMjIyBQYWlyZWQKCiMjIyMjIFJlZAoKYGBge3J9CnJlZF9wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEgPC0gZGZfZm9yX3N0YXRzX3dpZGUgJT4lCiAgZmlsdGVyKHRyZWF0bWVudCA9PSAicmVkIikgJT4lCiAgZHBseXI6OnNlbGVjdChzYW1wbGUsIHBlcmlvZCwgdHJlYXRtZW50LCBzZXgsCiAgICAgICAgICAgICAgICBhbGxfb2YocmVkX3NpZ19BTk9WQV9vdmVybGFwX3BhaXJlZCRtel9ydCkpICU+JQogIG11dGF0ZV9hdCgicGVyaW9kIiwgYXMuZmFjdG9yKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInNhbXBsZSIpCmBgYAoKYGBge3J9CiMgY3JlYXRlIGFubm90YXRpb24gcm93cyBmb3IgcHJlL3Bvc3QgaW50ZXJ2ZW50aW9ucyBhbmQgd3JhbmdsZQojIHNlbGVjdCByb3duYW1lcyAoc2FtcGxlcykgZnJvbSBoZWF0bWFwIG1ldGFkYXRhIChhbHNvIGVuc3VyZXMgdGhlIG9yZGVyIGlzIGNvcnJlY3QpCmFubm9fcmVkX3Jvd19wYWlyZWQgPC0gYXMuZGF0YS5mcmFtZShyb3duYW1lcyhyZWRfcGFpcmVkX3QudGVzdHNfaGVhdG1hcF9kYXRhKSkKCgojIHB1bGwgcGVyaW9kIGludG8gYSBjb2x1bW4KYW5ub19yZWRfcm93X3BhaXJlZCRwZXJpb2QgPC0gcmVkX3BhaXJlZF90LnRlc3RzX2hlYXRtYXBfZGF0YSRwZXJpb2QKYW5ub19yZWRfcm93X3BhaXJlZCRzZXggPC0gcmVkX3BhaXJlZF90LnRlc3RzX2hlYXRtYXBfZGF0YSRzZXgKCiMgc2VsZWN0IGNvbHMKYW5ub19yZWRfcm93X3BhaXJlZCA8LSBhbm5vX3JlZF9yb3dfcGFpcmVkICU+JQogIGRwbHlyOjpzZWxlY3QocGVyaW9kLCBzZXgpCgojIGdldCByb3duYW1lcyB0byBtYXRjaCBoZWF0bWFwIGFnYWluCnJvd25hbWVzKGFubm9fcmVkX3Jvd19wYWlyZWQpIDwtIHJvd25hbWVzKHJlZF9wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEpCmBgYAoKYGBge3J9CiMgY3JlYXRlIGFubm90YXRpb24gY29sb3JzCnJlZF9hbm5vdGF0aW9uX2NvbG9ycyA8LSBsaXN0KHBlcmlvZCA9IGMoImIxIiA9ICJkYXJrc2FsbW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiMyIgPSAicmVkIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNleCA9IGMoIk0iID0gImFxdWFtYXJpbmUyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRiIgPSAicGluayIpKQpgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0KcGhlYXRtYXAodChyZWRfcGFpcmVkX3QudGVzdHNfaGVhdG1hcF9kYXRhWywtYygxOjMpXSksCiAgICAgICAgICAgc2NhbGUgPSAicm93IiwKICAgICAgICAgICBjbHVzdGVyX3Jvd3MgPSBUUlVFLAogICAgICAgICAgIGFubm90YXRpb25fY29sID0gYW5ub19yZWRfcm93X3BhaXJlZCwKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbG9ycyA9IHJlZF9hbm5vdGF0aW9uX2NvbG9ycywKICAgICAgICAgICBjbHVzdGVyX2NvbHMgPSBUUlVFLAogICAgICAgICAgIHNob3dfcm93bmFtZXMgPSBUUlVFLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2Vfcm93cyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2VfY29scyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGN1dHJlZV9yb3dzID0gOCwKICAgICAgICAgY3V0cmVlX2NvbHMgPSAyLAogICAgICAgICAgIGNsdXN0ZXJpbmdfbWV0aG9kID0gIndhcmQuRDIiLAogICAgICAgICAgIGNvbG9yID0gY29sb3JSYW1wUGFsZXR0ZShjKCIjNjdhOWNmIiwgIiNmN2Y3ZjciLCAiI2VmOGE2MiIpKSgxNiksCiAgICAgICAgICAgbWFpbiA9ICJIZWF0bWFwIG9mIHNpZ25pZmljYW50IGZlYXR1cmVzIHByZS0gdnMuIHBvc3QtSGlnaC1MeWMgcGFpcmVkIHQtdGVzdCBcbnNpZyBpbiBBTk9WQSBhY3Jvc3MgYWxsIHRyZWF0bWVudCBncm91cHMgXG5ieSBCZW5qYW1vbmktSG9jaGJlcmcgY29ycmVjdGVkIHAtdmFsdWVzID4gMC4wNSBcbkJhY2tncm91bmQgZGlldCBlZmZlY3QgcmVtb3ZlZCBcbkxpcGlkb21pY3MgQzE4ICgrKSIpCiAgCmBgYAoKIyMjIyMgQmV0YQoKYGBge3J9CmJldGFfcGFpcmVkX3QudGVzdHNfaGVhdG1hcF9kYXRhIDwtIGRmX2Zvcl9zdGF0c193aWRlICU+JQogIGZpbHRlcih0cmVhdG1lbnQgPT0gImJldGEiKSAlPiUKICBkcGx5cjo6c2VsZWN0KHNhbXBsZSwgcGVyaW9kLCB0cmVhdG1lbnQsIHNleCwKICAgICAgICAgICAgICAgIGFsbF9vZihiZXRhX3NpZ19BTk9WQV9vdmVybGFwX3BhaXJlZCRtel9ydCkpICU+JQogIG11dGF0ZV9hdCgicGVyaW9kIiwgYXMuZmFjdG9yKSAlPiUKICBjb2x1bW5fdG9fcm93bmFtZXMoInNhbXBsZSIpCmBgYAoKYGBge3J9CiMgY3JlYXRlIGFubm90YXRpb24gcm93cyBmb3IgcHJlL3Bvc3QgaW50ZXJ2ZW50aW9ucyBhbmQgd3JhbmdsZQojIHNlbGVjdCByb3duYW1lcyAoc2FtcGxlcykgZnJvbSBoZWF0bWFwIG1ldGFkYXRhIChhbHNvIGVuc3VyZXMgdGhlIG9yZGVyIGlzIGNvcnJlY3QpCmFubm9fYmV0YV9yb3dfcGFpcmVkIDwtIGFzLmRhdGEuZnJhbWUocm93bmFtZXMoYmV0YV9wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEpKQoKCiMgcHVsbCBwZXJpb2QgaW50byBhIGNvbHVtbgphbm5vX2JldGFfcm93X3BhaXJlZCRwZXJpb2QgPC0gYmV0YV9wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEkcGVyaW9kCmFubm9fYmV0YV9yb3dfcGFpcmVkJHNleCA8LSBiZXRhX3BhaXJlZF90LnRlc3RzX2hlYXRtYXBfZGF0YSRzZXgKCiMgc2VsZWN0IGNvbHMKYW5ub19iZXRhX3Jvd19wYWlyZWQgPC0gYW5ub19iZXRhX3Jvd19wYWlyZWQgJT4lCiAgZHBseXI6OnNlbGVjdChzZXgsIHBlcmlvZCkKCiMgZ2V0IHJvd25hbWVzIHRvIG1hdGNoIGhlYXRtYXAgYWdhaW4Kcm93bmFtZXMoYW5ub19iZXRhX3Jvd19wYWlyZWQpIDwtIHJvd25hbWVzKGJldGFfcGFpcmVkX3QudGVzdHNfaGVhdG1hcF9kYXRhKQpgYGAKCmBgYHtyfQojIGNyZWF0ZSBhbm5vdGF0aW9uIGNvbG9ycwpiZXRhX2Fubm90YXRpb25fY29sb3JzIDwtIGxpc3QocGVyaW9kID0gYygiYjEiID0gImJpc3F1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjMiID0gImRhcmtvcmFuZ2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V4ID0gYygiTSIgPSAiYXF1YW1hcmluZTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGIiA9ICJwaW5rIikpCmBgYAoKYGBge3IsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xMH0KcGhlYXRtYXAodChiZXRhX3BhaXJlZF90LnRlc3RzX2hlYXRtYXBfZGF0YVssLWMoMTozKV0pLAogICAgICAgICAgIHNjYWxlID0gInJvdyIsCiAgICAgICAgICAgY2x1c3Rlcl9yb3dzID0gVFJVRSwKICAgICAgICAgICBhbm5vdGF0aW9uX2NvbCA9IGFubm9fYmV0YV9yb3dfcGFpcmVkLAogICAgICAgICAgIGFubm90YXRpb25fY29sb3JzID0gYmV0YV9hbm5vdGF0aW9uX2NvbG9ycywKICAgICAgICAgICBjbHVzdGVyX2NvbHMgPSBUUlVFLAogICAgICAgICAgIHNob3dfcm93bmFtZXMgPSBUUlVFLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2Vfcm93cyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2VfY29scyA9ICJldWNsaWRlYW4iLAogICAgICAgICAgIGN1dHJlZV9yb3dzID0gMTAsCiAgICAgICAgIGN1dHJlZV9jb2xzID0gNSwKICAgICAgICAgICBjbHVzdGVyaW5nX21ldGhvZCA9ICJ3YXJkLkQyIiwKICAgICAgICAgICBjb2xvciA9IGNvbG9yUmFtcFBhbGV0dGUoYygiIzY3YTljZiIsICIjZjdmN2Y3IiwgIiNlZjhhNjIiKSkoMTYpLAogICAgICAgICAgIG1haW4gPSAiSGVhdG1hcCBvZiBzaWduaWZpY2FudCBmZWF0dXJlcyBwcmUtIHZzLiBwb3N0LUhpZ2gtYmV0YSBwYWlyZWQgdC10ZXN0IFxuc2lnIGluIEFOT1ZBIGFjcm9zcyBhbGwgdHJlYXRtZW50IGdyb3VwcyBcbmJ5IEJlbmphbW9uaS1Ib2NoYmVyZyBjb3JyZWN0ZWQgcC12YWx1ZXMgPiAwLjA1IFxuQmFja2dyb3VuZCBkaWV0IGVmZmVjdCByZW1vdmVkIFxuTGlwaWRvbWljcyBDMTggKCspIikKICAKYGBgCgojIyMjIyBUb21hdG8KCmBgYHtyfQp0b21fcGFpcmVkX3QudGVzdHNfaGVhdG1hcF9kYXRhIDwtIGRmX2Zvcl9zdGF0c193aWRlICU+JQogIGZpbHRlcih0cmVhdG1lbnQgIT0gImNvbnRyb2wiKSAlPiUKICBkcGx5cjo6c2VsZWN0KHNhbXBsZSwgcGVyaW9kLCB0b21hdG9fb3JfY29udHJvbCwgc2V4LAogICAgICAgICAgICAgICAgYWxsX29mKHRvbV9zaWdfQU5PVkFfb3ZlcmxhcF9wYWlyZWQkbXpfcnQpKSAlPiUKICBtdXRhdGVfYXQoInBlcmlvZCIsIGFzLmZhY3RvcikgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJzYW1wbGUiKQpgYGAKCmBgYHtyfQojIGNyZWF0ZSBhbm5vdGF0aW9uIHJvd3MgZm9yIHByZS9wb3N0IGludGVydmVudGlvbnMgYW5kIHdyYW5nbGUKIyBzZWxlY3Qgcm93bmFtZXMgKHNhbXBsZXMpIGZyb20gaGVhdG1hcCBtZXRhZGF0YSAoYWxzbyBlbnN1cmVzIHRoZSBvcmRlciBpcyBjb3JyZWN0KQphbm5vX3RvbV9yb3dfcGFpcmVkIDwtIGFzLmRhdGEuZnJhbWUocm93bmFtZXModG9tX3BhaXJlZF90LnRlc3RzX2hlYXRtYXBfZGF0YSkpCgoKIyBwdWxsIHBlcmlvZCBpbnRvIGEgY29sdW1uCmFubm9fdG9tX3Jvd19wYWlyZWQkcGVyaW9kIDwtIHRvbV9wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEkcGVyaW9kCmFubm9fdG9tX3Jvd19wYWlyZWQkc2V4IDwtIHRvbV9wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGEkc2V4CgojIHNlbGVjdCBjb2xzCmFubm9fdG9tX3Jvd19wYWlyZWQgPC0gYW5ub190b21fcm93X3BhaXJlZCAlPiUKICBkcGx5cjo6c2VsZWN0KHBlcmlvZCwgc2V4KQoKIyBnZXQgcm93bmFtZXMgdG8gbWF0Y2ggaGVhdG1hcCBhZ2Fpbgpyb3duYW1lcyhhbm5vX3RvbV9yb3dfcGFpcmVkKSA8LSByb3duYW1lcyh0b21fcGFpcmVkX3QudGVzdHNfaGVhdG1hcF9kYXRhKQpgYGAKCmBgYHtyfQojIGNyZWF0ZSBhbm5vdGF0aW9uIGNvbG9ycwp0b21fYW5ub3RhdGlvbl9jb2xvcnMgPC0gbGlzdChwZXJpb2QgPSBjKCJiMSIgPSAiZGFya3NhbG1vbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjMiID0gInRvbWF0byIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXggPSBjKCJNIiA9ICJhcXVhbWFyaW5lMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkYiID0gInBpbmsiKSkKYGBgCgpgYGB7ciwgZmlnLmhlaWdodD0xMiwgZmlnLndpZHRoPTEwfQpwaGVhdG1hcCh0KHRvbV9wYWlyZWRfdC50ZXN0c19oZWF0bWFwX2RhdGFbLC1jKDE6MyldKSwKICAgICAgICAgICBzY2FsZSA9ICJyb3ciLAogICAgICAgICAgIGNsdXN0ZXJfcm93cyA9IFRSVUUsCiAgICAgICAgICAgYW5ub3RhdGlvbl9jb2wgPSBhbm5vX3RvbV9yb3dfcGFpcmVkLAogICAgICAgICAgIGFubm90YXRpb25fY29sb3JzID0gdG9tX2Fubm90YXRpb25fY29sb3JzLAogICAgICAgICAgIGNsdXN0ZXJfY29scyA9IFRSVUUsCiAgICAgICAgICAgc2hvd19yb3duYW1lcyA9IFRSVUUsCiAgICAgICAgICAgY2x1c3RlcmluZ19kaXN0YW5jZV9yb3dzID0gImV1Y2xpZGVhbiIsCiAgICAgICAgICAgY2x1c3RlcmluZ19kaXN0YW5jZV9jb2xzID0gImV1Y2xpZGVhbiIsCiAgICAgICAgICAgY3V0cmVlX3Jvd3MgPSA4LAogICAgICAgICBjdXRyZWVfY29scyA9IDIsCiAgICAgICAgICAgY2x1c3RlcmluZ19tZXRob2QgPSAid2FyZC5EMiIsCiAgICAgICAgICAgY29sb3IgPSBjb2xvclJhbXBQYWxldHRlKGMoIiM2N2E5Y2YiLCAiI2Y3ZjdmNyIsICIjZWY4YTYyIikpKDE2KSwKICAgICAgICAgICBtYWluID0gIkhlYXRtYXAgb2Ygc2lnbmlmaWNhbnQgZmVhdHVyZXMgcHJlLSB2cy4gcG9zdC1Ub21hdG8gcGFpcmVkIHQtdGVzdCBcbnNpZyBpbiBBTk9WQSBhY3Jvc3MgYWxsIHRyZWF0bWVudCBncm91cHMgXG5ieSBCZW5qYW1vbmktSG9jaGJlcmcgY29ycmVjdGVkIHAtdmFsdWVzID4gMC4wNSBcbkJhY2tncm91bmQgZGlldCBlZmZlY3QgcmVtb3ZlZCBcbkxpcGlkb21pY3MgQzE4ICgrKSIpCiAgCmBgYAoKIyBKb2luZWQgbGlzdHMKCmBgYHtyfQpkZl9mb3Jfc3RhdHMgPC0gZGZfZm9yX3N0YXRzICU+JQogICMgYWRkIHJlbCBhYnVuZCBsZXZlbHMgYmFjayBzaW5jZSB0aGlzIGdvdCBsb3N0IGR1cmluZyBkcmlmdCBjb3JyZWN0aW9uCiAgbXV0YXRlKHJlbF9hYnVuZCA9IDJeKHJlbF9hYnVuZF9sb2cyKSkKYGBgCgojIyBVc2luZyB0IHRlc3RzIHNpZwoKIyMjIFRvbWF0byBlZmZlY3RzCgpIb3cgbWFueSBmZWF0dXJlcyBhcmUgc2lnbmlmaWNhbnQgKHdpdGggYmFja2dyb3VuZCBkaWV0IGVmZmVjdCByZW1vdmVkKQoKYGBge3J9CmRpbShzaWdfcGFpcmVkX3RvbV9ybUJHKQpgYGAKCldoaWNoIGZlYXR1cmVzIGFyZSBzaWduaWZpY2FudCBpbiB1bnBhaXJlZCB0IHRlc3QgY29tcGFyaXNvbnM/CgpgYGB7cn0KIyBzZWxlY3Qgb25seSBzaWduaWZpY2FudCBmZWF0dXJlcyBmcm9tIHByZSB2IHBvc3QgdG9tYXRvIGVmZmVjdCB0aGF0IGhhdmUgYSBtYXRjaGluZyBrZXkgdG8gc2lnbmlmaWNhbnQgZmVhdHVyZXMgcG9zdCB0b21hdG8gdi4gcG9zdCBjb250cm9sIGNvbXBhcmlzb24KCm92ZXJhbGxfdG9tYXRvX2VmZmVjdCA8LSBzZW1pX2pvaW4oc2lnX3BhaXJlZF90b21fcm1CRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdfdG9tX3ZfY3RybF90LnRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9ICJtel9ydCIpCgpkaW0ob3ZlcmFsbF90b21hdG9fZWZmZWN0KQpgYGAKCiMjIyMgU3VtbWFyeSBzdGF0cwoKYGBge3J9CihGQ190b21hdG9fZWZmZWN0IDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIobXpfcnQgJWluJSBvdmVyYWxsX3RvbWF0b19lZmZlY3QkbXpfcnQpICU+JQogIHNlbGVjdChzdWJqZWN0LCB0cmVhdG1lbnRfcGVyaW9kLCBtel9ydCwgcmVsX2FidW5kKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IHRyZWF0bWVudF9wZXJpb2QsCiAgICAgICAgICAgICAgdmFsdWVzX2Zyb20gPSByZWxfYWJ1bmQpICU+JQogIG11dGF0ZShjb250cm9sX0ZDID0gY29udHJvbF9iMy9jb250cm9sX2IxLAogICAgICAgICBiZXRhX0ZDID0gYmV0YV9iMy9iZXRhX2IxLAogICAgICAgICByZWRfRkMgPSByZWRfYjMvcmVkX2IxKSAlPiUKICBzdW1tYXJpemUobWVhbl9jb250cm9sX0ZDID0gbWVhbihjb250cm9sX0ZDLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBtZWFuX2JldGFfRkMgPSBtZWFuKGJldGFfRkMsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIG1lYW5fcmVkX0ZDID0gbWVhbihyZWRfRkMsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIG1lYW5fY3RybF9iZXRhX0ZDID0gbWVhbihtZWFuKGJldGFfRkMsIG5hLnJtID0gVFJVRSkvbWVhbihjb250cm9sX0ZDLCBuYS5ybSA9IFRSVUUpKSwKICAgICAgICAgICAgbWVhbl9jdHJsX3JlZF9GQyA9IG1lYW4obWVhbihyZWRfRkMsIG5hLnJtID0gVFJVRSkvbWVhbihjb250cm9sX0ZDLCBuYS5ybSA9IFRSVUUpKSwKICAgICAgICAgICAgbWVhbl9yZWRfYmV0YV9GQyA9IG1lYW4obWVhbihiZXRhX0ZDLCBuYS5ybSA9IFRSVUUpL21lYW4ocmVkX0ZDLCBuYS5ybSA9IFRSVUUpKSkpCmBgYAoKIyMjIyBDb21waWxlIGxpc3QKCmBgYHtyfQojIGNvbWJpbmUgY2x1c3RlciBhbmQgRkMgaW5mbwp0b21fZWZmZWN0X2xpc3QgPC0gbGVmdF9qb2luKEZDX3RvbWF0b19lZmZlY3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiKSAlPiUKICBzZWxlY3QobXpfcnQsIG16LCBydCwgQ2x1c3Rlcl9JRCwgQ2x1c3Rlcl9mZWF0dXJlcywgQ2x1c3Rlcl9zaXplLCBldmVyeXRoaW5nKCkpCgoKYGBgCgpgYGB7cn0KIyBhZGQgaW4gYXZlcmFnZXMgZm9yIGVhY2ggZ3JvdXAgKyB0aW1lcG9pbnQKdG9tX2VmZmVjdF9saXN0IDwtCiAgbGVmdF9qb2luKHRvbV9lZmZlY3RfbGlzdCwKICAgICAgICAgICAgKGRmX2Zvcl9zdGF0cyAlPiUKICAgICAgICAgICAgICAgZ3JvdXBfYnkodHJlYXRtZW50X3BlcmlvZCwgbXpfcnQpICU+JQogICAgICAgICAgICAgICBzdW1tYXJpemUobWVhbl9yZWxfYWJ1bmQgPSBtZWFuKHJlbF9hYnVuZCkpICU+JQogICAgICAgICAgICAgICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gdHJlYXRtZW50X3BlcmlvZCwgdmFsdWVzX2Zyb20gPSBtZWFuX3JlbF9hYnVuZCkpLAogICAgICAgICAgICBieSA9ICJtel9ydCIpCgpoZWFkKHRvbV9lZmZlY3RfbGlzdCwgbj0xKQpgYGAKCiMjIyMgRXhwb3J0IGxpc3QKCmBgYHtyfQp3cml0ZV9jc3YodG9tX2VmZmVjdF9saXN0LCAiZWZmZWN0IGxpc3RzL3RvbWF0by1lZmZlY3QuY3N2IikKYGBgCgojIyMjIEJveHBsb3RzCgpgYGB7cn0KIyBtYWtlIGNvbXBhcmlzb24gbGlzdCBmb3IgY29tcGFyaXNvbiB0ZXN0cwpteV9jb21wYXJpc29ucyA8LSBsaXN0KCBjKCJiZXRhX2IxIiwgImJldGFfYjMiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGMoInJlZF9iMSIsICJyZWRfYjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYygiY29udHJvbF9iMSIsICJjb250cm9sX2IzIikgKQpgYGAKCmBgYHtyfQojIHN1YnNldCBkZiBmb3IgdW5pcXVlbHkgc2lnbmlmaWNhbnQgZmVhdHVyZXMKanVzdFRfdG9tX2VmZmVjdF9kZiA8LSBkZl9mb3Jfc3RhdHNfd2lkZSAlPiUKICBkcGx5cjo6c2VsZWN0KGMoMToyMSksCiAgICAgICAgICAgICAgICAoYWxsX29mKG92ZXJhbGxfdG9tYXRvX2VmZmVjdCRtel9ydCkpKQoKIyBtYWtlIHRpZHkgZGYKanVzdFRfdG9tX2VmZmVjdF9kZl90aWR5IDwtIGp1c3RUX3RvbV9lZmZlY3RfZGYgJT4lCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSAyMjpuY29sKC4pLAogICAgICAgICAgICAgICBuYW1lc190byA9ICJtel9ydCIsCiAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJyZWxfYWJ1bmRfbG9nMiIpCmBgYAoKYGBge3J9CiMgZml4IGZhY3RvciBsZXZlbHMgZm9yIHRpbWUgcG9pbnRzCmp1c3RUX3RvbV9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnRfcGVyaW9kIDwtIGZhY3RvcihqdXN0VF90b21fZWZmZWN0X2RmX3RpZHkkdHJlYXRtZW50X3BlcmlvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiY29udHJvbF9iMSIsICJjb250cm9sX2IzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJldGFfYjEiLCAiYmV0YV9iMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZF9iMSIsICJyZWRfYjMiKSkKCiMgY2hlY2sKbGV2ZWxzKGp1c3RUX3RvbV9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnRfcGVyaW9kKSAgCgpqdXN0VF90b21fZWZmZWN0X2RmX3RpZHkkdHJlYXRtZW50IDwtIGZhY3RvcihqdXN0VF90b21fZWZmZWN0X2RmX3RpZHkkdHJlYXRtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb250cm9sIiwgImJldGEiLCAicmVkIikpCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD0xNX0KanVzdFRfdG9tX2VmZmVjdF9kZl90aWR5ICU+JSAKICBnZ3Bsb3QoYWVzKHggPSB0cmVhdG1lbnRfcGVyaW9kLCB5ID0gcmVsX2FidW5kX2xvZzIsIGZpbGwgPSB0cmVhdG1lbnRfcGVyaW9kKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJkYXJrc2VhZ3JlZW4yIiwgImRhcmtncmVlbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhbiIsICJvcmFuZ2VyZWQyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXZlbmRlcmJsdXNoMyIsICJkYXJrcmVkIiksCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygicHJlIGNvbnRyb2wiLCAicG9zdCBjb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmUgYmV0YSIsICJwb3N0IGJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZSBseWMiLCAicG9zdCBseWMiKSkgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiIiwgIiIsICIiLCAiIiwgIiIsICIiKSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBzdWJqZWN0LCBjb2xvdXIgPSBzdWJqZWN0KSwgc2l6ZSA9IDAuMikgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTIsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgZmFjZXRfd3JhcCh2YXJzKG16X3J0KSwgc2NhbGVzID0gImZyZWVfeSIsIG5jb2wgPSA0KSArIAogIHN0YXRfY29tcGFyZV9tZWFucyhjb21wYXJpc29ucyA9IG15X2NvbXBhcmlzb25zLCBtZXRob2QgPSAidC50ZXN0IiwgcGFpcmVkID0gVFJVRSwgcC5hZGp1c3QubWV0aG9kID0gIkJIIikgKwogIGxhYnMoeCA9ICIiLAogICAgICAgeSA9ICJMb2cyIHRyYW5zZm9ybWVkIHJlbGF0aXZlIGFidW5kYW5jZSIsCiAgICAgICB0aXRsZSA9ICJUb21hdG8gZWZmZWN0IC0gc2lnbmlmaWNhbnQgd2hlbiBjb21wYXJlZCB0byBjb250cm9sLCBhbHNvIHNpZ25pZmljYW50IHByZSBhbmQgcG9zdCB0b21hdG8iLAogICAgICAgc3VidGl0bGUgPSAiRkRSIGFkai4gcC12YWx1ZXMgZnJvbSBULXRlc3RzIikKICAKYGBgCgojIyMgQmV0YSBlZmZlY3RzCgpgYGB7cn0KZGltKHNpZ19wYWlyZWRfYmV0YV9ybUJHKQpgYGAKCldoaWNoIGZlYXR1cmVzIGFyZSBzaWduaWZpY2FudCBpbiBwYWlyZWQgdCB0ZXN0IGNvbXBhcmlzb25zIGZvciBiZXRhLCBidXQgbm90IHNpZ25pZmljYW50IGluIHRoZSBzYW1lIGRpcmVjdGlvbiBmb3IgY29udHJvbD8KCkZlYXR1cmVzIHRoYXQgYXJlIHNpZ25pZmljYW50IGluIGJvdGggcHJlLSB2cy4gcG9zdC4gYmV0YSBBTkQgcG9zdC1iZXRhIHZzLiBwb3N0LWNvbnRyb2wKCmBgYHtyfQojIHNlbGVjdCBmZWF0dXJlcyB0aGF0IGFyZSBvbmx5IHNpZ25pZmljYW50IHBvc3QgYmV0YSB2LiBwb3N0IGNvbnRyb2wgY29tcGFyaXNvbgpvdmVyYWxsX2JldGFfZWZmZWN0IDwtIHNlbWlfam9pbihzaWdfcGFpcmVkX2JldGFfcm1CRywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnX2JldGFfdl9jdHJsX3QudGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiKQpkaW0ob3ZlcmFsbF9iZXRhX2VmZmVjdCkKYGBgCgpgYGB7cn0KCm92ZXJhbGxfdW5pcXVlX2JldGFfZWZmZWN0IDwtIGxlZnRfam9pbihvdmVyYWxsX2JldGFfZWZmZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnX2JldGFfdl9yZWRfdC50ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiKQpkaW0ob3ZlcmFsbF91bmlxdWVfYmV0YV9lZmZlY3QpCmBgYAoKIyMjIyBTdW1tYXJ5IHN0YXRzCgpgYGB7cn0KKEZDX2JldGFfZWZmZWN0IDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIobXpfcnQgJWluJSBvdmVyYWxsX2JldGFfZWZmZWN0JG16X3J0KSAlPiUKICBzZWxlY3Qoc3ViamVjdCwgdHJlYXRtZW50X3BlcmlvZCwgbXpfcnQsIHJlbF9hYnVuZCkgJT4lCiAgZ3JvdXBfYnkobXpfcnQpICU+JQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSB0cmVhdG1lbnRfcGVyaW9kLAogICAgICAgICAgICAgIHZhbHVlc19mcm9tID0gcmVsX2FidW5kKSAlPiUKICBtdXRhdGUoY29udHJvbF9GQyA9IGNvbnRyb2xfYjMvY29udHJvbF9iMSwKICAgICAgICAgYmV0YV9GQyA9IGJldGFfYjMvYmV0YV9iMSwKICAgICAgICAgcmVkX0ZDID0gcmVkX2IzL3JlZF9iMSkgJT4lCiAgc3VtbWFyaXplKG1lYW5fY29udHJvbF9GQyA9IG1lYW4oY29udHJvbF9GQywgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgbWVhbl9iZXRhX0ZDID0gbWVhbihiZXRhX0ZDLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBtZWFuX3JlZF9GQyA9IG1lYW4ocmVkX0ZDLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBtZWFuX2N0cmxfYmV0YV9GQyA9IG1lYW4obWVhbihiZXRhX0ZDLCBuYS5ybSA9IFRSVUUpL21lYW4oY29udHJvbF9GQywgbmEucm0gPSBUUlVFKSksCiAgICAgICAgICAgIG1lYW5fY3RybF9yZWRfRkMgPSBtZWFuKG1lYW4ocmVkX0ZDLCBuYS5ybSA9IFRSVUUpL21lYW4oY29udHJvbF9GQywgbmEucm0gPSBUUlVFKSksCiAgICAgICAgICAgIG1lYW5fcmVkX2JldGFfRkMgPSBtZWFuKG1lYW4oYmV0YV9GQywgbmEucm0gPSBUUlVFKS9tZWFuKHJlZF9GQywgbmEucm0gPSBUUlVFKSkpKQpgYGAKCiMjIyMgQ29tcGlsZSBsaXN0CgpgYGB7cn0KIyBjb21iaW5lIGNsdXN0ZXIgYW5kIEZDIGluZm8KYmV0YV9lZmZlY3RfbGlzdCA8LSBsZWZ0X2pvaW4oRkNfYmV0YV9lZmZlY3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSA9ICJtel9ydCIpICU+JQogIHNlbGVjdChtel9ydCwgbXosIHJ0LCBDbHVzdGVyX0lELCBDbHVzdGVyX2ZlYXR1cmVzLCBDbHVzdGVyX3NpemUsIGV2ZXJ5dGhpbmcoKSkKCgpgYGAKCmBgYHtyfQojIGFkZCBpbiBhdmVyYWdlcyBmb3IgZWFjaCBncm91cCArIHRpbWVwb2ludApiZXRhX2VmZmVjdF9saXN0IDwtCiAgbGVmdF9qb2luKGJldGFfZWZmZWN0X2xpc3QsCiAgICAgICAgICAgIChkZl9mb3Jfc3RhdHMgJT4lCiAgICAgICAgICAgICAgIGdyb3VwX2J5KHRyZWF0bWVudF9wZXJpb2QsIG16X3J0KSAlPiUKICAgICAgICAgICAgICAgc3VtbWFyaXplKG1lYW5fcmVsX2FidW5kID0gbWVhbihyZWxfYWJ1bmQpKSAlPiUKICAgICAgICAgICAgICAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IHRyZWF0bWVudF9wZXJpb2QsIHZhbHVlc19mcm9tID0gbWVhbl9yZWxfYWJ1bmQpKSwKICAgICAgICAgICAgYnkgPSAibXpfcnQiKQoKaGVhZChiZXRhX2VmZmVjdF9saXN0LCBuPTEpCmBgYAoKIyMjIyBFeHBvcnQgbGlzdAoKYGBge3J9CndyaXRlX2NzdihiZXRhX2VmZmVjdF9saXN0LCAiZWZmZWN0IGxpc3RzL2JldGEtZWZmZWN0LmNzdiIpCmBgYAoKIyMjIyBCb3hwbG90cwoKYGBge3J9CiMgc3Vic2V0IGRmIGZvciB1bmlxdWVseSBzaWduaWZpY2FudCBmZWF0dXJlcwpqdXN0VF9iZXRhX2VmZmVjdF9kZiA8LSBkZl9mb3Jfc3RhdHNfd2lkZSAlPiUKICBkcGx5cjo6c2VsZWN0KGMoMToyMSksCiAgICAgICAgICAgICAgICAoYWxsX29mKG92ZXJhbGxfYmV0YV9lZmZlY3QkbXpfcnQpKSkKCiMgbWFrZSB0aWR5IGRmCmp1c3RUX2JldGFfZWZmZWN0X2RmX3RpZHkgPC0ganVzdFRfYmV0YV9lZmZlY3RfZGYgJT4lCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSAyMjpuY29sKC4pLAogICAgICAgICAgICAgICBuYW1lc190byA9ICJtel9ydCIsCiAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJyZWxfYWJ1bmRfbG9nMiIpCmBgYAoKYGBge3J9CiMgZml4IGZhY3RvciBsZXZlbHMgZm9yIHRpbWUgcG9pbnRzCmp1c3RUX2JldGFfZWZmZWN0X2RmX3RpZHkkdHJlYXRtZW50X3BlcmlvZCA8LSBmYWN0b3IoanVzdFRfYmV0YV9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnRfcGVyaW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb250cm9sX2IxIiwgImNvbnRyb2xfYjMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmV0YV9iMSIsICJiZXRhX2IzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkX2IxIiwgInJlZF9iMyIpKQoKIyBjaGVjawpsZXZlbHMoanVzdFRfYmV0YV9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnRfcGVyaW9kKSAgCgpqdXN0VF9iZXRhX2VmZmVjdF9kZl90aWR5JHRyZWF0bWVudCA8LSBmYWN0b3IoanVzdFRfYmV0YV9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbnRyb2wiLCAiYmV0YSIsICJyZWQiKSkKCmp1c3RUX2JldGFfZWZmZWN0X2RmX3RpZHkkcGVyaW9kIDwtIGZhY3RvcihqdXN0VF9iZXRhX2VmZmVjdF9kZl90aWR5JHBlcmlvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiYjEiLCAiYjMiKSkKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTE4fQpqdXN0VF9iZXRhX2VmZmVjdF9kZl90aWR5ICU+JSAKICBnZ3Bsb3QoYWVzKHggPSB0cmVhdG1lbnRfcGVyaW9kLCB5ID0gcmVsX2FidW5kX2xvZzIsIGZpbGwgPSB0cmVhdG1lbnRfcGVyaW9kKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJkYXJrc2VhZ3JlZW4yIiwgImRhcmtncmVlbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhbiIsICJvcmFuZ2VyZWQyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXZlbmRlcmJsdXNoMyIsICJkYXJrcmVkIiksCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygicHJlIGNvbnRyb2wiLCAicG9zdCBjb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmUgYmV0YSIsICJwb3N0IGJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZSBseWMiLCAicG9zdCBseWMiKSkgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiIiwgIiIsICIiLCAiIiwgIiIsICIiKSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBzdWJqZWN0LCBjb2xvdXIgPSBzdWJqZWN0KSwgc2l6ZSA9IDAuMikgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTIsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgZmFjZXRfd3JhcCh2YXJzKG16X3J0KSwgc2NhbGVzID0gImZyZWVfeSIsIG5yb3cgPSAzKSArIAogIHN0YXRfY29tcGFyZV9tZWFucyhjb21wYXJpc29ucyA9IG15X2NvbXBhcmlzb25zLCBtZXRob2QgPSAidC50ZXN0IiwgcGFpcmVkID0gVFJVRSwgcC5hZGp1c3QubWV0aG9kID0gIkJIIikgKwogIGxhYnMoeCA9ICIiLAogICAgICAgeSA9ICJMb2cyIHRyYW5zZm9ybWVkIHJlbGF0aXZlIGFidW5kYW5jZSIsCiAgICAgICB0aXRsZSA9ICJIaWdoIGJldGEganVpY2UgZWZmZWN0IC0gc2lnbmlmaWNhbnQgd2hlbiBjb21wYXJlZCB0byBjb250cm9sLCBhbHNvIHNpZ25pZmljYW50IHByZSBhbmQgcG9zdCBiZXRhIGp1aWNlIiwKICAgICAgIHN1YnRpdGxlID0gIkZEUiBhZGouIHAtdmFsdWVzIGZyb20gVC10ZXN0cyIpCmBgYAoKIyMjIyMgbS96IDEwMDIKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD02fQoKKG16MTAwMl9icHMgPC0ganVzdFRfYmV0YV9lZmZlY3RfZGZfdGlkeSAlPiUgCiAgIGZpbHRlcihtel9ydCA9PSAiMTAwMi42NThfMy4wNzkiKSAlPiUKICBnZ3BhaXJlZCh4ID0gInBlcmlvZCIsIHkgPSAicmVsX2FidW5kX2xvZzIiLCBmaWxsID0gInRyZWF0bWVudCIsIAogICAgICAgICAgIGxpbmUuY29sb3IgPSAiZ3JheSIsIAogICAgICAgICAgIGxpbmUuc2l6ZSA9IDEsIAogICAgICAgICAgIGZhY2V0LmJ5ID0gInRyZWF0bWVudCIsIAogICAgICAgICAgIHNob3J0LnBhbmVsLmxhYnMgPSBGQUxTRSwgcGFuZWwubGFicyA9IGxpc3QodHJlYXRtZW50ID0gYygiQ29udHJvbCIsICJIaWdoIFxuXHUwM2IyLUNhcm90ZW5lIiwgIkhpZ2ggXG5MeWNvcGVuZSIpKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImxpZ2h0Z3JlZW4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZCIpLAogICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkNvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2ggXHUwM2IyLUNhcm90ZW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIEx5Y29wZW5lIiksCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJUcmVhdG1lbnQiKSArCiAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiYjEiID0gInByZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjMiID0gInBvc3QiKSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBzdWJqZWN0KSwgY29sb3VyID0gImdyYXkiLCBsaW5ld2lkdGggPSAwLjE1KSArCiAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxOCwgYmFzZV9mYW1pbHkgPSAic2FucyIpICsKICBsYWJzKHggPSAiIiwKICAgICAgIHkgPSAiTG9nMiByZWxhdGl2ZSBhYnVuZGFuY2UiLAogICAgICAgdGl0bGUgPSAiTFBDIDE2OjAgbGV2ZWxzIGF0IGVhY2ggdGltZXBvaW50IiwKICAgICAgIHN1YnRpdGxlID0gIm0veiAxMDAyLjY1OCwgUlQgMy4wNzkgbWluIikgKwogICBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHBhaXJlZCA9IFRSVUUpICsKICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSkKYGBgCgpgYGB7cn0KZ2dzYXZlKCJwbG90cyBhbmQgZmlndXJlcy9tejEwMDJicHMuc3ZnIiwgaGVpZ2h0ID0gNiwgd2lkdGggPSA4KQpgYGAKCiMjIyMjIGJldGEtY2Fyb3RlbmUKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTZ9CiMgZm9yIEdvcmRvbiBjb25mZXJlbmNlCihiQ19icHMgPC0ganVzdFRfYmV0YV9lZmZlY3RfZGZfdGlkeSAlPiUgCiAgIGZpbHRlcihtel9ydCA9PSAiNTM2LjQzN18xMS4yMDEiKSAlPiUKICBnZ3BhaXJlZCh4ID0gInBlcmlvZCIsIHkgPSAicmVsX2FidW5kX2xvZzIiLCBmaWxsID0gInRyZWF0bWVudCIsIAogICAgICAgICAgIGxpbmUuY29sb3IgPSAiZ3JheSIsIAogICAgICAgICAgIGxpbmUuc2l6ZSA9IDEsIAogICAgICAgICAgIGZhY2V0LmJ5ID0gInRyZWF0bWVudCIsIAogICAgICAgICAgIHNob3J0LnBhbmVsLmxhYnMgPSBGQUxTRSwgcGFuZWwubGFicyA9IGxpc3QodHJlYXRtZW50ID0gYygiQ29udHJvbCIsICJIaWdoIFxuXHUwM2IyLUNhcm90ZW5lIiwgIkhpZ2ggXG5MeWNvcGVuZSIpKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImxpZ2h0Z3JlZW4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZCIpLAogICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkNvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2ggXHUwM2IyLUNhcm90ZW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIEx5Y29wZW5lIiksCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJUcmVhdG1lbnQiKSArCiAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiYjEiID0gInByZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjMiID0gInBvc3QiKSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBzdWJqZWN0KSwgY29sb3VyID0gImdyYXkiLCBsaW5ld2lkdGggPSAwLjE1KSArCiAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxOCwgYmFzZV9mYW1pbHkgPSAic2FucyIpICsKICBsYWJzKHggPSAiIiwKICAgICAgIHkgPSAiTG9nMiByZWxhdGl2ZSBhYnVuZGFuY2UiLAogICAgICAgdGl0bGUgPSAiXHUwM2IyLUNhcm90ZW5lIGxldmVscyBhdCBlYWNoIHRpbWVwb2ludCIpICsKICAgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCBwYWlyZWQgPSBUUlVFKSArCiAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikpCmBgYAoKCgojIyMjIyBiQyBhbmQgMTAwMgoKYGBge3IsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD04fQpiQ19icHMgKyBtejEwMDJfYnBzICsgcGxvdF9sYXlvdXQoYXhlcyA9ICJjb2xsZWN0IikKYGBgCgpgYGB7cn0KZ2dzYXZlKCJwbG90cyBhbmQgZmlndXJlcy9iQ2FuZExQQzE2LWJwcy5zdmciLCBoZWlnaHQgPSA2LCB3aWR0aCA9IDEyKQpgYGAKCgojIyMjIyAxMDAyIGludmVzdGlnYXRpb25zCgpgYGB7ciwgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9Nn0KZGZfZm9yX3N0YXRzJHBlcmlvZCA8LSBmYWN0b3IoZGZfZm9yX3N0YXRzJHBlcmlvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiYjEiLCAiYjMiKSkKCmRmX2Zvcl9zdGF0cyAlPiUgCiAgIGZpbHRlcihtel9ydCA9PSAiNDk2LjM0Ml8zLjA4MiIpICU+JQogIGdncGFpcmVkKHggPSAicGVyaW9kIiwgeSA9ICJyZWxfYWJ1bmRfbG9nMiIsIGZpbGwgPSAidHJlYXRtZW50IiwgCiAgICAgICAgICAgbGluZS5jb2xvciA9ICJncmF5IiwgCiAgICAgICAgICAgbGluZS5zaXplID0gMSwgCiAgICAgICAgICAgZmFjZXQuYnkgPSAidHJlYXRtZW50IiwgCiAgICAgICAgICAgc2hvcnQucGFuZWwubGFicyA9IEZBTFNFLCBwYW5lbC5sYWJzID0gbGlzdCh0cmVhdG1lbnQgPSBjKCJDb250cm9sIiwgIkhpZ2ggXG5cdTAzYjItQ2Fyb3RlbmUiLCAiSGlnaCBcbkx5Y29wZW5lIikpKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRncmVlbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkIiksCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQ29udHJvbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCBcdTAzYjItQ2Fyb3RlbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2ggTHljb3BlbmUiKSwKICAgICAgICAgICAgICAgICAgICBuYW1lID0gIlRyZWF0bWVudCIpICsKICAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBjKCJiMSIgPSAicHJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiMyIgPSAicG9zdCIpKSArCiAgZ2VvbV9saW5lKGFlcyhncm91cCA9IHN1YmplY3QpLCBjb2xvdXIgPSAiZ3JheSIsIGxpbmV3aWR0aCA9IDAuMTUpICsKICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDE4LCBiYXNlX2ZhbWlseSA9ICJzYW5zIikgKwogIGxhYnMoeCA9ICIiLAogICAgICAgeSA9ICJMb2cyIHJlbGF0aXZlIGFidW5kYW5jZSIsCiAgICAgICB0aXRsZSA9ICIJCjQ5Ni4zNDJfMy4wODIgbGV2ZWxzIGF0IGVhY2ggdGltZXBvaW50IikgKwogICBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHBhaXJlZCA9IFRSVUUpICsKICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCipJIGFtIHBsb3R0aW5nIHRoaXMgbWFzcyBiZWNhdXNlIEkgYmVsaWV2ZSBpdCBpcyBMUEMgMTY6MCwgd2hpY2ggaXMgd2hhdCBJIGJlbGlldmUgbS96IDEwMDIgaXMgYW4gYWRkdWN0IGZvci4gVGhlc2UgbGV2ZWxzIChmb3IgbS96IDQ5NikgYXJlIHVuY2hhbmdpbmcsIGJ1dCB3aGVuIHlvdSBsb29rIGF0IHRoZSBjaHJvbWF0b2dyYW1zLCB0aGlzIG1hc3MgaXMgb3ZlcnNhdHVyYXRlZCBhbmQgbWF5IGJlIG91dHNpZGUgb2YgcmFuZ2Ugb2YgbGluZWFyaXR5LCBwb3NzaWJseSB0aGUgcmVhc29uIHdoeSB0aGlzIG1hc3MgZG9lc24ndCBzZWVtIHRvIGNoYW5nZSoKCk5leHQsIHdlJ2xsIGxvb2sgYXQgOTkxIHdoaWNoIGlzIGxpa2VseSB0aGUgdGhlIGRpbWVyIGZvcm0gb2YgbS96IDQ5NgoKOTkxLjY3NDNfMy4wODIKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD02fQpkZl9mb3Jfc3RhdHMgJT4lIAogICBmaWx0ZXIobXpfcnQgPT0gIjk5MS42NzQzXzMuMDgyIikgJT4lCiAgZ2dwYWlyZWQoeCA9ICJwZXJpb2QiLCB5ID0gInJlbF9hYnVuZF9sb2cyIiwgZmlsbCA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBsaW5lLmNvbG9yID0gImdyYXkiLCAKICAgICAgICAgICBsaW5lLnNpemUgPSAxLCAKICAgICAgICAgICBmYWNldC5ieSA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBzaG9ydC5wYW5lbC5sYWJzID0gRkFMU0UsIHBhbmVsLmxhYnMgPSBsaXN0KHRyZWF0bWVudCA9IGMoIkNvbnRyb2wiLCAiSGlnaCBcblx1MDNiMi1DYXJvdGVuZSIsICJIaWdoIFxuTHljb3BlbmUiKSkpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGdyZWVuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWQiKSwKICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJDb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIFx1MDNiMi1DYXJvdGVuZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCBMeWNvcGVuZSIpLAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiVHJlYXRtZW50IikgKwogICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoImIxIiA9ICJwcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImIzIiA9ICJwb3N0IikpICsKICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gc3ViamVjdCksIGNvbG91ciA9ICJncmF5IiwgbGluZXdpZHRoID0gMC4xNSkgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTgsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgbGFicyh4ID0gIiIsCiAgICAgICB5ID0gIkxvZzIgcmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgIHRpdGxlID0gIgkKOTkxLjY3NDNfMy4wODIgbGV2ZWxzIGF0IGVhY2ggdGltZXBvaW50IikgKwogICBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHBhaXJlZCA9IFRSVUUpICsKICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCgpgYGB7ciwgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9Nn0KZGZfZm9yX3N0YXRzICU+JSAKICAgZmlsdGVyKG16X3J0ID09ICI0OTguMzQ2XzMuMDgyIikgJT4lCiAgZ2dwYWlyZWQoeCA9ICJwZXJpb2QiLCB5ID0gInJlbF9hYnVuZF9sb2cyIiwgZmlsbCA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBsaW5lLmNvbG9yID0gImdyYXkiLCAKICAgICAgICAgICBsaW5lLnNpemUgPSAxLCAKICAgICAgICAgICBmYWNldC5ieSA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBzaG9ydC5wYW5lbC5sYWJzID0gRkFMU0UsIHBhbmVsLmxhYnMgPSBsaXN0KHRyZWF0bWVudCA9IGMoIkNvbnRyb2wiLCAiSGlnaCBcblx1MDNiMi1DYXJvdGVuZSIsICJIaWdoIFxuTHljb3BlbmUiKSkpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGdyZWVuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWQiKSwKICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJDb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIFx1MDNiMi1DYXJvdGVuZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCBMeWNvcGVuZSIpLAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiVHJlYXRtZW50IikgKwogICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoImIxIiA9ICJwcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImIzIiA9ICJwb3N0IikpICsKICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gc3ViamVjdCksIGNvbG91ciA9ICJncmF5IiwgbGluZXdpZHRoID0gMC4xNSkgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTgsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgbGFicyh4ID0gIiIsCiAgICAgICB5ID0gIkxvZzIgcmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgIHRpdGxlID0gIgkKNDk4LjM0Nl8zLjA4MiBsZXZlbHMgYXQgZWFjaCB0aW1lcG9pbnQiKSArCiAgIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcGFpcmVkID0gVFJVRSkgKwogICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKCmBgYHtyfQpjb3IoeCA9IGRmX2Zvcl9zdGF0c193aWRlJGA0OTYuMzQyXzMuMDgyYCwgeSA9IGRmX2Zvcl9zdGF0c193aWRlJGAxMDAyLjY1OF8zLjA3OWApCmBgYAoKYGBge3J9CmNvcih4ID0gZGZfZm9yX3N0YXRzX3dpZGUkYDk5MS42NzQzXzMuMDgyYCwgeSA9IGRmX2Zvcl9zdGF0c193aWRlJGAxMDAyLjY1OF8zLjA3OWApCmBgYAoKYGBge3J9CmNvcih4ID0gZGZfZm9yX3N0YXRzX3dpZGUkYDk5MS42NzQzXzMuMDgyYCwgeSA9IGRmX2Zvcl9zdGF0c193aWRlJGAxMDAyLjY1OF8zLjA3OWApCmBgYAoKCiMjIyMjIDgzNSBpbnZlc3RpZ2F0aW9uCgpIZXJlLCBJJ20gdHJ5aW5nIHRvIHNlZSBpZiBtL3ogODM1IGlzIHJlYWxseSB0aGUgQzE0IGlzb3RvcG9sb2d1ZSBvZiBtLnogODMzLiBMZXQncyBsb29rIHRvIHNlZSBpZiB0cmVuZHMgYXJlIHNpbWlsYXIuCgpgYGB7ciwgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9MTJ9CmRmX2Zvcl9zdGF0cyAlPiUgCiAgIGZpbHRlcihtel9ydCAlaW4lIGMoIjgzMy42NTA3XzguOTcxIiwgIjgzNS42NTY2XzguOTY4IikpICU+JQogIGdncGFpcmVkKHggPSAicGVyaW9kIiwgeSA9ICJyZWxfYWJ1bmRfbG9nMiIsIGZpbGwgPSAidHJlYXRtZW50IiwgCiAgICAgICAgICAgbGluZS5jb2xvciA9ICJncmF5IiwgCiAgICAgICAgICAgbGluZS5zaXplID0gMSwgCiAgICAgICAgICAgZmFjZXQuYnkgPSBjKCJ0cmVhdG1lbnQiLCAibXpfcnQiKSwgCiAgICAgICAgICAgc2hvcnQucGFuZWwubGFicyA9IEZBTFNFLCBwYW5lbC5sYWJzID0gbGlzdCh0cmVhdG1lbnQgPSBjKCJDb250cm9sIiwgIkhpZ2ggXG5cdTAzYjItQ2Fyb3RlbmUiLCAiSGlnaCBcbkx5Y29wZW5lIikpKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRncmVlbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkIiksCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQ29udHJvbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCBcdTAzYjItQ2Fyb3RlbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2ggTHljb3BlbmUiKSwKICAgICAgICAgICAgICAgICAgICBuYW1lID0gIlRyZWF0bWVudCIpICsKICAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBjKCJiMSIgPSAicHJlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiMyIgPSAicG9zdCIpKSArCiAgZ2VvbV9saW5lKGFlcyhncm91cCA9IHN1YmplY3QpLCBjb2xvdXIgPSAiZ3JheSIsIGxpbmV3aWR0aCA9IDAuMTUpICsKICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDE4LCBiYXNlX2ZhbWlseSA9ICJzYW5zIikgKwogIGxhYnMoeCA9ICIiLAogICAgICAgeSA9ICJMb2cyIHJlbGF0aXZlIGFidW5kYW5jZSIsCiAgICAgICB0aXRsZSA9ICIJCjgzMy42NTA3XzguOTcxLCA4MzUuNjU2Nl84Ljk2OCBsZXZlbHMgYXQgZWFjaCB0aW1lcG9pbnQiKSArCiAgIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcGFpcmVkID0gVFJVRSkgKwogICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKCmBgYHtyfQoKY29yKGRmX2Zvcl9zdGF0c193aWRlJGA4MzMuNjUwN184Ljk3MWAsIGRmX2Zvcl9zdGF0c193aWRlJGA4MzUuNjU2Nl84Ljk2OGApCmBgYAoKVGhlc2UgZGVmaW5pdGVseSBzaG91bGQgaGF2ZSBiZWVuIGNsdXN0ZXJlZCEKCiMjIyBSZWQgZWZmZWN0cwoKYGBge3J9CmRpbShzaWdfcGFpcmVkX3JlZF9ybUJHKQpgYGAKCmBgYHtyfQojIHNlbGVjdCBmZWF0dXJlcyB0aGF0IGFyZSBvbmx5IHNpZ25pZmljYW50IHBvc3QgcmVkIHYuIHBvc3QgY29udHJvbCBjb21wYXJpc29uCgpvdmVyYWxsX3JlZF9lZmZlY3QgPC0gc2VtaV9qb2luKHNpZ19wYWlyZWRfcmVkX3JtQkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ19yZWRfdl9jdHJsX3QudGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gIm16X3J0IikKZGltKG92ZXJhbGxfcmVkX2VmZmVjdCkKYGBgCgpgYGB7cn0KIyBzZWxlY3QgZmVhdHVyZXMgdGhhdCBhcmUgb25seSBzaWduaWZpY2FudCBwb3N0IHRvbWF0byB2LiBwb3N0IGNvbnRyb2wgY29tcGFyaXNvbgoKb3ZlcmFsbF91bmlxdWVfcmVkX2VmZmVjdCA8LSBsZWZ0X2pvaW4ob3ZlcmFsbF9yZWRfZWZmZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnX2JldGFfdl9yZWRfdC50ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiKQpkaW0ob3ZlcmFsbF91bmlxdWVfcmVkX2VmZmVjdCkKaGVhZChvdmVyYWxsX3VuaXF1ZV9yZWRfZWZmZWN0KQpgYGAKCiMjIyMgU3VtbWFyeSBzdGF0cwoKYGBge3J9CihGQ19yZWRfZWZmZWN0IDwtIGRmX2Zvcl9zdGF0cyAlPiUKICBmaWx0ZXIobXpfcnQgJWluJSBvdmVyYWxsX3JlZF9lZmZlY3QkbXpfcnQpICU+JQogIHNlbGVjdChzdWJqZWN0LCB0cmVhdG1lbnRfcGVyaW9kLCBtel9ydCwgcmVsX2FidW5kKSAlPiUKICBncm91cF9ieShtel9ydCkgJT4lCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IHRyZWF0bWVudF9wZXJpb2QsCiAgICAgICAgICAgICAgdmFsdWVzX2Zyb20gPSByZWxfYWJ1bmQpICU+JQogIG11dGF0ZShjb250cm9sX0ZDID0gY29udHJvbF9iMy9jb250cm9sX2IxLAogICAgICAgICBiZXRhX0ZDID0gYmV0YV9iMy9iZXRhX2IxLAogICAgICAgICByZWRfRkMgPSByZWRfYjMvcmVkX2IxKSAlPiUKICBzdW1tYXJpemUobWVhbl9jb250cm9sX0ZDID0gbWVhbihjb250cm9sX0ZDLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBtZWFuX2JldGFfRkMgPSBtZWFuKGJldGFfRkMsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIG1lYW5fcmVkX0ZDID0gbWVhbihyZWRfRkMsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIG1lYW5fY3RybF9iZXRhX0ZDID0gbWVhbihtZWFuKGJldGFfRkMsIG5hLnJtID0gVFJVRSkvbWVhbihjb250cm9sX0ZDLCBuYS5ybSA9IFRSVUUpKSwKICAgICAgICAgICAgbWVhbl9jdHJsX3JlZF9GQyA9IG1lYW4obWVhbihyZWRfRkMsIG5hLnJtID0gVFJVRSkvbWVhbihjb250cm9sX0ZDLCBuYS5ybSA9IFRSVUUpKSwKICAgICAgICAgICAgbWVhbl9yZWRfYmV0YV9GQyA9IG1lYW4obWVhbihiZXRhX0ZDLCBuYS5ybSA9IFRSVUUpL21lYW4ocmVkX0ZDLCBuYS5ybSA9IFRSVUUpKSkpCmBgYAoKIyMjIyBDb21waWxlIGxpc3QKCmBgYHtyfQojIGNvbWJpbmUgY2x1c3RlciBhbmQgRkMgaW5mbwpyZWRfZWZmZWN0X2xpc3QgPC0gbGVmdF9qb2luKEZDX3JlZF9lZmZlY3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgPSAibXpfcnQiKSAlPiUKICBzZWxlY3QobXpfcnQsIG16LCBydCwgQ2x1c3Rlcl9JRCwgQ2x1c3Rlcl9mZWF0dXJlcywgQ2x1c3Rlcl9zaXplLCBldmVyeXRoaW5nKCkpCgoKYGBgCgpgYGB7cn0KIyBhZGQgaW4gYXZlcmFnZXMgZm9yIGVhY2ggZ3JvdXAgKyB0aW1lcG9pbnQKcmVkX2VmZmVjdF9saXN0IDwtCiAgbGVmdF9qb2luKHJlZF9lZmZlY3RfbGlzdCwKICAgICAgICAgICAgKGRmX2Zvcl9zdGF0cyAlPiUKICAgICAgICAgICAgICAgZ3JvdXBfYnkodHJlYXRtZW50X3BlcmlvZCwgbXpfcnQpICU+JQogICAgICAgICAgICAgICBzdW1tYXJpemUobWVhbl9yZWxfYWJ1bmQgPSBtZWFuKHJlbF9hYnVuZCkpICU+JQogICAgICAgICAgICAgICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gdHJlYXRtZW50X3BlcmlvZCwgdmFsdWVzX2Zyb20gPSBtZWFuX3JlbF9hYnVuZCkpLAogICAgICAgICAgICBieSA9ICJtel9ydCIpCgpoZWFkKHJlZF9lZmZlY3RfbGlzdCwgbj0xKQpgYGAKCiMjIyMgRXhwb3J0IGxpc3QKCmBgYHtyfQp3cml0ZV9jc3YocmVkX2VmZmVjdF9saXN0LCAiZWZmZWN0IGxpc3RzL3JlZC1lZmZlY3QuY3N2IikKYGBgCgojIyMjIEJveHBsb3RzCgpgYGB7cn0KIyBzdWJzZXQgZGYgZm9yIHVuaXF1ZWx5IHNpZ25pZmljYW50IGZlYXR1cmVzCmp1c3RUX3JlZF9lZmZlY3RfZGYgPC0gZGZfZm9yX3N0YXRzX3dpZGUgJT4lCiAgZHBseXI6OnNlbGVjdChjKDE6MjEpLAogICAgICAgICAgICAgICAgKGFsbF9vZihvdmVyYWxsX3VuaXF1ZV9yZWRfZWZmZWN0JG16X3J0KSkpCgojIG1ha2UgdGlkeSBkZgpqdXN0VF9yZWRfZWZmZWN0X2RmX3RpZHkgPC0ganVzdFRfcmVkX2VmZmVjdF9kZiAlPiUKICBwaXZvdF9sb25nZXIoY29scyA9IDIyOm5jb2woLiksCiAgICAgICAgICAgICAgIG5hbWVzX3RvID0gIm16X3J0IiwKICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gInJlbF9hYnVuZF9sb2cyIikKYGBgCgpgYGB7cn0KIyBmaXggZmFjdG9yIGxldmVscyBmb3IgdGltZSBwb2ludHMKanVzdFRfcmVkX2VmZmVjdF9kZl90aWR5JHRyZWF0bWVudF9wZXJpb2QgPC0gZmFjdG9yKGp1c3RUX3JlZF9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnRfcGVyaW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJjb250cm9sX2IxIiwgImNvbnRyb2xfYjMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmV0YV9iMSIsICJiZXRhX2IzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkX2IxIiwgInJlZF9iMyIpKQoKIyBjaGVjawpsZXZlbHMoanVzdFRfcmVkX2VmZmVjdF9kZl90aWR5JHRyZWF0bWVudF9wZXJpb2QpICAKCmp1c3RUX3JlZF9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnQgPC0gZmFjdG9yKGp1c3RUX3JlZF9lZmZlY3RfZGZfdGlkeSR0cmVhdG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImNvbnRyb2wiLCAiYmV0YSIsICJyZWQiKSkKCmxldmVscyhqdXN0VF9yZWRfZWZmZWN0X2RmX3RpZHkkdHJlYXRtZW50KQoKanVzdFRfcmVkX2VmZmVjdF9kZl90aWR5JHBlcmlvZCA8LSBmYWN0b3IoanVzdFRfcmVkX2VmZmVjdF9kZl90aWR5JHBlcmlvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiYjEiLCAiYjMiKSkKYGBgCgpgYGB7ciwgZmlnLmhlaWdodD0xMiwgZmlnLndpZHRoPTEyLCBmaWcuYXNwPTAuNX0KanVzdFRfcmVkX2VmZmVjdF9kZl90aWR5ICU+JSAKICBnZ3Bsb3QoYWVzKHggPSB0cmVhdG1lbnRfcGVyaW9kLCB5ID0gcmVsX2FidW5kX2xvZzIsIGZpbGwgPSB0cmVhdG1lbnRfcGVyaW9kKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJkYXJrc2VhZ3JlZW4yIiwgImRhcmtncmVlbiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhbiIsICJvcmFuZ2VyZWQyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXZlbmRlcmJsdXNoMyIsICJkYXJrcmVkIiksCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygicHJlIGNvbnRyb2wiLCAicG9zdCBjb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmUgYmV0YSIsICJwb3N0IGJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZSBseWMiLCAicG9zdCBseWMiKSkgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiIiwgIiIsICIiLCAiIiwgIiIsICIiKSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBzdWJqZWN0LCBjb2xvdXIgPSBzdWJqZWN0KSwgc2l6ZSA9IDAuMikgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTIsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgZmFjZXRfd3JhcCh2YXJzKG16X3J0KSwgc2NhbGVzID0gImZyZWVfeSIpICsgCiAgc3RhdF9jb21wYXJlX21lYW5zKGNvbXBhcmlzb25zID0gbXlfY29tcGFyaXNvbnMsIG1ldGhvZCA9ICJ0LnRlc3QiLCBwYWlyZWQgPSBUUlVFLCBwLmFkanVzdC5tZXRob2QgPSAiQkgiKSArCiAgbGFicyh4ID0gIiIsCiAgICAgICB5ID0gIkxvZzIgdHJhbnNmb3JtZWQgcmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgIHRpdGxlID0gIkhpZ2ggbHljIGVmZmVjdCAtIHNpZ25pZmljYW50IHdoZW4gY29tcGFyZWQgdG8gY29udHJvbCwgXG5zaWduaWZpY2FudCBwcmUgdnMgcG9zdCByZWQiLAogICAgICAgc3VidGl0bGUgPSAiRkRSIGFkai4gcC12YWx1ZXMgZnJvbSBULXRlc3RzIikKYGBgCgoKIyMjIyMgbHljCgpgYGB7ciwgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9Nn0KKGx5Y2JwcyA8LSBqdXN0VF9yZWRfZWZmZWN0X2RmX3RpZHkgJT4lIAogICBmaWx0ZXIobXpfcnQgPT0gIjUzNi40MzdfMTAuOTcxIikgJT4lCiAgZ2dwYWlyZWQoeCA9ICJwZXJpb2QiLCB5ID0gInJlbF9hYnVuZF9sb2cyIiwgZmlsbCA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBsaW5lLmNvbG9yID0gImdyYXkiLCAKICAgICAgICAgICBsaW5lLnNpemUgPSAxLCAKICAgICAgICAgICBmYWNldC5ieSA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBzaG9ydC5wYW5lbC5sYWJzID0gRkFMU0UsIHBhbmVsLmxhYnMgPSBsaXN0KHRyZWF0bWVudCA9IGMoIkNvbnRyb2wiLCAiSGlnaCBcblx1MDNiMi1DYXJvdGVuZSIsICJIaWdoIFxuTHljb3BlbmUiKSkpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGdyZWVuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWQiKSwKICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJDb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIFx1MDNiMi1DYXJvdGVuZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCBMeWNvcGVuZSIpLAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiVHJlYXRtZW50IikgKwogICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoImIxIiA9ICJwcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImIzIiA9ICJwb3N0IikpICsKICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gc3ViamVjdCksIGNvbG91ciA9ICJncmF5IiwgbGluZXdpZHRoID0gMC4xNSkgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTgsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgbGFicyh4ID0gIiIsCiAgICAgICB5ID0gIkxvZzIgcmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgIHRpdGxlID0gIgkKTHljb3BlbmUgbGV2ZWxzIGF0IGVhY2ggdGltZXBvaW50IikgKwogICBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHBhaXJlZCA9IFRSVUUpICsKICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSkKYGBgCgojIyMjIyBtL3o3NjAKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD02fQoobXo3NjBicHMgPC0ganVzdFRfcmVkX2VmZmVjdF9kZl90aWR5ICU+JSAKICAgZmlsdGVyKG16X3J0ID09ICI3NjAuNDkyNV82Ljk4IikgJT4lCiAgZ2dwYWlyZWQoeCA9ICJwZXJpb2QiLCB5ID0gInJlbF9hYnVuZF9sb2cyIiwgZmlsbCA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBsaW5lLmNvbG9yID0gImdyYXkiLCAKICAgICAgICAgICBsaW5lLnNpemUgPSAxLCAKICAgICAgICAgICBmYWNldC5ieSA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBzaG9ydC5wYW5lbC5sYWJzID0gRkFMU0UsIHBhbmVsLmxhYnMgPSBsaXN0KHRyZWF0bWVudCA9IGMoIkNvbnRyb2wiLCAiSGlnaCBcblx1MDNiMi1DYXJvdGVuZSIsICJIaWdoIFxuTHljb3BlbmUiKSkpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGdyZWVuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWQiKSwKICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJDb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIFx1MDNiMi1DYXJvdGVuZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCBMeWNvcGVuZSIpLAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiVHJlYXRtZW50IikgKwogICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoImIxIiA9ICJwcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImIzIiA9ICJwb3N0IikpICsKICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gc3ViamVjdCksIGNvbG91ciA9ICJncmF5IiwgbGluZXdpZHRoID0gMC4xNSkgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTgsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgbGFicyh4ID0gIiIsCiAgICAgICB5ID0gIkxvZzIgcmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgIHRpdGxlID0gIlBDIGxldmVscyBhdCBlYWNoIHRpbWVwb2ludCIsCiAgICAgICBzdWJ0aXRsZSA9ICJtL3ogNzYwLjQ5MjUsIFJUIDYuOTggbWluLiIpICsKICAgc3RhdF9jb21wYXJlX21lYW5zKG1ldGhvZCA9ICJ0LnRlc3QiLCBwYWlyZWQgPSBUUlVFKSArCiAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikpCmBgYAoKIyMjIyMgbHljICsgbS96NzYwCgpgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTh9Cmx5Y2JwcyArIG16NzYwYnBzICsgcGxvdF9sYXlvdXQoYXhlcyA9ICJjb2xsZWN0IikKYGBgCgpgYGB7cn0KZ2dzYXZlKCJwbG90cyBhbmQgZmlndXJlcy9MWUNhbmRtejc2MC1icHMuc3ZnIiwgaGVpZ2h0ID0gOCwgd2lkdGggPSAxMikKYGBgCgojIyMjIyA3NjAgaW52ZXN0aWdhdGlvbgoKVGhpcyBmZWF0dXJlIHNlZW1zIHRvIGJlIGdldHRpbmcgbWFzc2VkIGJ5IGFub3RoZXIgbWFzcyAoNzYwLjUyODEpLiBMZXQncyBzZWUgaWYgdGhlIGxldmVscyBhcmUgY29tcGFyYWJsZQoKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTZ9CmRmX2Zvcl9zdGF0cyAlPiUgCiAgIGZpbHRlcihtel9ydCA9PSAiNzYwLjUyODFfNi45ODQiKSAlPiUKICBnZ3BhaXJlZCh4ID0gInBlcmlvZCIsIHkgPSAicmVsX2FidW5kX2xvZzIiLCBmaWxsID0gInRyZWF0bWVudCIsIAogICAgICAgICAgIGxpbmUuY29sb3IgPSAiZ3JheSIsIAogICAgICAgICAgIGxpbmUuc2l6ZSA9IDEsIAogICAgICAgICAgIGZhY2V0LmJ5ID0gInRyZWF0bWVudCIsIAogICAgICAgICAgIHNob3J0LnBhbmVsLmxhYnMgPSBGQUxTRSwgcGFuZWwubGFicyA9IGxpc3QodHJlYXRtZW50ID0gYygiQ29udHJvbCIsICJIaWdoIFxuXHUwM2IyLUNhcm90ZW5lIiwgIkhpZ2ggXG5MeWNvcGVuZSIpKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImxpZ2h0Z3JlZW4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZCIpLAogICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkNvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2ggXHUwM2IyLUNhcm90ZW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIEx5Y29wZW5lIiksCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJUcmVhdG1lbnQiKSArCiAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiYjEiID0gInByZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjMiID0gInBvc3QiKSkgKwogIGdlb21fbGluZShhZXMoZ3JvdXAgPSBzdWJqZWN0KSwgY29sb3VyID0gImdyYXkiLCBsaW5ld2lkdGggPSAwLjE1KSArCiAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxOCwgYmFzZV9mYW1pbHkgPSAic2FucyIpICsKICBsYWJzKHggPSAiIiwKICAgICAgIHkgPSAiTG9nMiByZWxhdGl2ZSBhYnVuZGFuY2UiLAogICAgICAgdGl0bGUgPSAiCQo3NjAuNTI4MV82Ljk4NCBsZXZlbHMgYXQgZWFjaCB0aW1lcG9pbnQiKSArCiAgIHN0YXRfY29tcGFyZV9tZWFucyhtZXRob2QgPSAidC50ZXN0IiwgcGFpcmVkID0gVFJVRSkgKwogICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKSXQgdHVybnMgb3V0IHRoYXQgdGhlIGZlYXR1cmUgbWFza2luZyBteSBjb21wb3VuZCBpcyBhIGMxNCBpc290b3BvbG9ndWUgb2YgNzU4LjU3MzQKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD02fQpkZl9mb3Jfc3RhdHMgJT4lIAogICBmaWx0ZXIobXpfcnQgPT0gIjc1OC41NzM0XzYuOTgyIikgJT4lCiAgZ2dwYWlyZWQoeCA9ICJwZXJpb2QiLCB5ID0gInJlbF9hYnVuZF9sb2cyIiwgZmlsbCA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBsaW5lLmNvbG9yID0gImdyYXkiLCAKICAgICAgICAgICBsaW5lLnNpemUgPSAxLCAKICAgICAgICAgICBmYWNldC5ieSA9ICJ0cmVhdG1lbnQiLCAKICAgICAgICAgICBzaG9ydC5wYW5lbC5sYWJzID0gRkFMU0UsIHBhbmVsLmxhYnMgPSBsaXN0KHRyZWF0bWVudCA9IGMoIkNvbnRyb2wiLCAiSGlnaCBcblx1MDNiMi1DYXJvdGVuZSIsICJIaWdoIFxuTHljb3BlbmUiKSkpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGdyZWVuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWQiKSwKICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJDb250cm9sIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIFx1MDNiMi1DYXJvdGVuZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCBMeWNvcGVuZSIpLAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiVHJlYXRtZW50IikgKwogICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoImIxIiA9ICJwcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImIzIiA9ICJwb3N0IikpICsKICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gc3ViamVjdCksIGNvbG91ciA9ICJncmF5IiwgbGluZXdpZHRoID0gMC4xNSkgKwogIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplID0gMTgsIGJhc2VfZmFtaWx5ID0gInNhbnMiKSArCiAgbGFicyh4ID0gIiIsCiAgICAgICB5ID0gIkxvZzIgcmVsYXRpdmUgYWJ1bmRhbmNlIiwKICAgICAgIHRpdGxlID0gIgkKNzU4LjU3MzRfNi45ODIgbGV2ZWxzIGF0IGVhY2ggdGltZXBvaW50IikgKwogICBzdGF0X2NvbXBhcmVfbWVhbnMobWV0aG9kID0gInQudGVzdCIsIHBhaXJlZCA9IFRSVUUpICsKICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCgoKIyBGZWF0dXJlIGFubm90YXRpb24KCiMjIFdyYW5nbGUKCmBgYHtyfQphbm5vdGF0ZWRfZGYgPC0gZGZfZm9yX3N0YXRzICU+JQogIHNlcGFyYXRlKGNvbCA9IG16X3J0LAogICAgICAgICAgIGludG8gPSBjKCJteiIsICJydCIpLAogICAgICAgICAgIHNlcCA9ICJfIikgJT4lCiAgc2VsZWN0KG16LCBydCkgJT4lCiAgdW5pcXVlKCkKYGBgCgoKYGBge3J9CiMgYW5ub3RhdGVkX2RmIDwtIGxpcGlkcjo6YWRkX3NhbXBsZV9hbm5vdGF0aW9uKGFubm90YXRlZF9kZiRteikKYGBgCgoKCiMgRXhwb3J0CgojIyBNZXRhYm9saXRlIGRmCgpgYGB7cn0Kd3JpdGVfY3N2KERDX2ltcF9tZXRhYmluZF9jbHVzdF9sb2cyX25vUUNzLCAiZmluYWwtb21pY3MtZGYtbGlwaWRvbWljcy1wb3MuY3N2Iixjb2xfbmFtZXMgPSBUUlVFKQpgYGAK